Java高级软件工程师面试题
Java 软件高级工程师笔试题
【智力部分】(30分)
1. 烧一根不均匀的绳要用一个小时,如何用它来判断半个小时?(5分)
两头同时烧
2. 4,4,10,10,加减乘除,怎么出24点?四个数字分别只能用一次(5分)
(10*10-4)/4
3. 如果你有无穷多的水,一个容积为3L的和5L的提桶,你如何准确称出 4L的水?(5分)
第一步:向5L的通中放两次3L水,这时3L水桶剩1L水。
第二步:将3L水桶中的1L水倒入5L的水桶中,这时5L的水桶中有1L水。
第三步:再用3L水桶盛满水全部倒入5L的水桶,4L水就称出来了。
4. 一只蜗牛从井底爬到井口,每天白天蜗牛要睡觉,晚上才出来活动,一个晚上蜗牛可以向上爬3尺,但是白天睡觉的时候会往下滑2尺,井深10尺,问蜗牛几天可以爬出来?(5分)
8天。
前七天是(3-1)*7 =7
第八天晚上又爬了3尺,这时已经到井口了。在井口睡觉想滑也滑不下去了。
5. 有一种细菌,经过一分钟分裂为2个,再过一分钟,分裂为4个,这样,将一个细菌放在一个瓶子里面,一个小时后瓶子被细菌充满了。现在假设一开始放入瓶中的为两个细菌,那么到充满瓶子要多长的时间?(10分)
59分钟。
一个放了一个细菌的瓶子经过一分钟分裂,就有两个细菌了。第二个瓶子直接就有了两个细菌,也就相当于调过了第一个瓶子在第一分钟的情况了。以后的情况就完全一致了,所以是59分钟。
【专业部分】(70分)
1. 简述一下面向对象的特征,并举例说明你对面向对象的理解?(5分)
面向对象是基于万物皆对象这个哲学观点,把一个帝乡抽象成类,具体就是你吧一个对象的静态特征和动态特征抽象成属性和方法,也就是把一类事务的算法和数据结构封装在一个类之中,程序就是多个对象和互相间的通信组成的。
面向对象具有封装性,继承性,多态性。封装隐蔽了对象内部不需要暴漏的细节,似的内部细节的变动跟外界脱离,只依靠接口进行通信。封装性降低了编程的复杂性。通过继承,使得新建一个类变得容易,一个类从派生类哪里获得其非私有的方法和公用属性的繁琐工作交给了编译器。而继承和实现接口和运行时的类型标定机制所产生的多态,使得不同的类所产生的对象能够对相同的消息做出不同的反映,记得提高了代码的通用性。
总之,面向对象的特性提高了大型程序的重用性和可维护性。
2. ArrayList和HsahSet的区别,HashMap和Hashtable的区别?(5分)
ArrayList和HashSet的区别:
ArrayList是一组有序的集合,存放的是对象的引用,而不是对象本身。存放的对象是可以重复的。
HashSet存放的对象是不可重复的。
HashMap和Hashtable的区别:
- 继承的类不同
- HashTable是线程安全的,而HashMap是非线程安全的。
- HashMap的key,value是允许null的,而HashTable不允许。且HashMap效率高。
3. 线程同步的关键字是什么?sleep() 和 wait() 有什么区别?怎么唤醒wait()停止的线程?(5分)
线程同步的关键字:synchronized
Sleep()和Wait()的区别:
- 父类不同Sleep()来自Thread类,wait()来自Objcet类
- 最主要的是sleep()方法没有释放锁,而wait方法释放了所,使得其他线程可以使用同步空值快或者方法。
Sleep不让出系统资源;wait是进入线程等待池等待,让出系统资源,其他线程可以占用cpu,且需要notify,notifyAlll来唤醒等待池中的线程。
- 使用范围:wait,notify和notifyAll只能在同步空值方法或者同步控制块里使用,而sleep可以在任何地方使用
- Sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
4. 列举你在项目中常用的设计模式(伪代码或类图),并说明每种设计模式的具体应用场景。(5分)
单例模式
Public class Singleton{
private static volatile Singleton singleton = null;
private Singleton(){}
public static Singleton getSingleton(){
if(singleton == null){
synchronized(Singleton.class){
if(singleton == null){
singleton = new Singleton();
}
}
}
return singleton;
}
}
多线程中多次获取某个对象的实例,而不必每次都去new。
4. Spring中事务管理支持哪几种方式以及每种方式的具体使用方法。(5分)
实现方式两种:
编码方式;
声明式事务管理方式。
声明式事务管理是通过AOP技术实现的,实质就是:在方法执行前后进行拦截,然后在目标方法开始之前创建并加入事务,执行完成目标方法后根据执行情况提交后回滚事务。
声明式事务管理有两种方式:基于XML配置文件(拦截器 AOP),通过标签@Transaction注解
另一种答案:
1.每个bead都有一个事务代理
- Hibernate的缓存等级及其特点(5分)
一级缓存:session级别的缓存,session关闭后,缓存就没有了
二级缓存:sessionFactory级别的缓存,它缓存的是对象
查询缓存:查询缓存也是sessionFactory级别的缓存,它缓存的是sql语句
一般二级缓存要和查询缓存配合使用,避免N+1的问题。更建议使用mamcatched单独做缓存。
5. 至少写出一种11位手机号码的正则表达式。(5分)
^[1][358][0-9]{9}$
6. 用简短的代码实现字符串“s tr in g”到“s tr in g”转换。即将多个空格转换为一个空格(5分)
String s = “s tr in g”;
S=s.replaceAll(“ +”,” ”);
7. 使用Socket编写一个程序,客户端向服务器端发送请求(发送字符串即可),服务端接收后发送反馈信息.(10分)
TCP协议
网上例子很多 自己找。代码过长
8. 用SQL语句实现Oracle分页查询。(10分)
Select * from (select ROWNUM rn,t.* from tableName T where t.rn <=40) TT where tt.rn >=10
Select * from tableName where userID limit 0,20;
- aa,bb表都有20个字段,且记录数量都很大,aa,bb表的X字段(非空)上有索引, 请用SQL列出aa表里面存在的X在bb表不存在的X的值,请写出认为最快的语句,并解译原因。(10分)
select a.x from aa a where not exists (select 1 from bb b where a.x = b.x)
Java高级软件工程师面试题的更多相关文章
- [面试] Java高级软件工程师面试考纲(转)
如果要应聘高级开发工程师职务,仅仅懂得Java的基础知识是远远不够的,还必须懂得常用数据结构.算法.网络.操作系统等知识.因此本文不会讲解具体的技术,笔者综合自己应聘各大公司的经历,整理了一份大公司对 ...
- Java高级软件工程师面试考纲(转)
如果要应聘高级开发工程师职务,仅仅懂得Java的基础知识是远远不够的,还必须懂得常用数据结构.算法.网络.操作系统等知识.因此本文不会讲解具体的技术,笔者综合自己应聘各大公司的经历,整理了一份大公司对 ...
- Java高级软件工程师面试考纲
如果要应聘高级开发工程师职务,仅仅懂得Java的基础知识是远远不够的,还必须懂得常用数据结构.算法.网络.操作系统等知识.因此本文不会讲解具体的技术,笔者综合自己应聘各大公司的经历,整理了一份大公司对 ...
- 问题集录--Java高级软件工程师面试考纲(转)
如果要应聘高级开发工程师职务,仅仅懂得Java的基础知识是远远不够的,还必须懂得常用数据结构.算法.网络.操作系统等知识.因此本文不会讲解具体的技术,笔者综合自己应聘各大公司的经历,整理了一份大公司对 ...
- .NET高级软件工程师面试题排行榜(转载)
原文引用:https://m.sanwen8.cn/p/104gMSd.html 一.对于 Web 性能优化,您有哪些了解和经验吗? 出现指数:五颗星 主要考点:这道题是博主在博客园的新闻里面看到的, ...
- Atitit. 高级软件工程师and 普通的区别 高级编程的门槛总结
Atitit. 高级软件工程师and 普通的区别 高级编程的门槛总结 1. 完备的知识体系 2 2. 编程理论/原理的掌握 2 1.1. 掌握常用的概念(ORM,IOC,AOP,event driv ...
- Java高级开发工程师面试笔记
最近在复习面试相关的知识点,然后做笔记,后期(大概在2018.02.01)会分享给大家,尽自己最大的努力做到最好,还希望到时候大家能给予建议和补充 ----------------2018.03.05 ...
- Java 初级软件工程师 认证考试试卷1
Java 初级软件工程师 认证考试试卷 笔试(A卷) 考试时间150分钟 总分 100分 姓 名_______________________ 身份证号_____________ ...
- java高级&资深&专家面试题-行走江湖必备-持续更新ing
行走江湖必备一份面试题,这里给大家整理了一套.0面试官最喜欢问的问题或者出场率较高的面试题,助校招或者社招路上的你一臂之力! 首先我们需要明白一个事实,招聘的一个很关键的因素是在给自己找未来的同事,同 ...
随机推荐
- Js 将 Date 转化为指定格式的String
// 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占 ...
- php 安装Memcache扩展
转载地址:http://www.tuicool.com/articles/EB3imm 文章概述:由于当前机器安装的php,是用yum安装,现在需要使用到memadmin做一些监控, memadmin ...
- RocEDU.阅读.写作《乌合之众》(二)
第二卷 群体的意见与信念 决定着群体意见与信念的因素分为两类:直接因素与间接因素. 直接因素:使观念采取一定形式并且使它能够产生一定结果的因素. 间接因素:能够使群体接受某些信念并使其难以接受别的信念 ...
- 20145328 《Java程序设计》第10周学习总结
20145328 <Java程序设计>第10周学习总结 资料学习内容总结 网络编程 13.1 网络概述 网络编程技术是当前一种主流的编程技术,随着联网趋势的逐步增强以及网络应用程序的大量出 ...
- linux input输入子系统分析《四》:input子系统整体流程全面分析
1 input输入子系统整体流程 本节分析input子系统在内核中的实现,包括输入子系统(Input Core),事件处理层(Event Handler)和设备驱动层.由于上节代码讲解了设备 ...
- MR案例:输出/输入SequenceFile
SequenceFile文件是Hadoop用来存储二进制形式的key-value对而设计的一种平面文件(Flat File).在SequenceFile文件中,每一个key-value对被看做是一条记 ...
- kali rolling 配置网络
一. 在文件系统里找到/etc/network下的interfaces文件,打开后可以看到eth0为dhcp,将其修改为如下形式: # This file describes the network ...
- git重命名分支名
git branch -m old_branch_name new_branch_name
- oracle查看被锁的表以及解锁表
在oracle 上面查看别锁定的表,以及解锁表的sql: select t3.object_name,t3.owner,t2.machine,t2.sid,t2.serial# from v$lock ...
- Flume NG初次使用
一.什么是Flume NG Flume是一个分布式.可靠.和高可用性的海量日志采集.聚合和传输的系统,支持在日志系统中定制各类数据发送方,用于收集数据:同时Flume提供对数据的简单处理,并写到各种数 ...