Java高级软件工程师面试题

来源:互联网 发布:调研数据分析报告模板 编辑:程序博客网 时间:2024/06/08 12:00

标签:算法 事务 class 使用 代码 si it java la

Java 软件高级工程师笔试题

【智力部分】(30分)

  1. 烧一根不均匀的绳要用一个小时,如何用它来判断半个小时?(5分)

两头同时烧

  1. 4,4,10,10,加减乘除,怎么出24点?四个数字分别只能用一次(5分)

(10*10-4)/4

  1. 如果你有无穷多的水,一个容积为3L的和5L的提桶,你如何准确称出 4L的水?(5分)

第一步:向5L的通中放两次3L水,这时3L水桶剩1L水。

第二步:将3L水桶中的1L水倒入5L的水桶中,这时5L的水桶中有1L水。

第三步:再用3L水桶盛满水全部倒入5L的水桶,4L水就称出来了。

  1. 一只蜗牛从井底爬到井口,每天白天蜗牛要睡觉,晚上才出来活动,一个晚上蜗牛可以向上爬3尺,但是白天睡觉的时候会往下滑2尺,井深10尺,问蜗牛几天可以爬出来?(5分)

8天。

前七天是(3-2)*7 =7

第八天晚上又爬了3尺,这时已经到井口了。在井口睡觉想滑也滑不下去了。

  1. 有一种细菌,经过一分钟分裂为2个,再过一分钟,分裂为4个,这样,将一个细菌放在一个瓶子里面,一个小时后瓶子被细菌充满了。现在假设一开始放入瓶中的为两个细菌,那么到充满瓶子要多长的时间?(10分)

59分钟。

一个放了一个细菌的瓶子经过一分钟分裂,就有两个细菌了。第二个瓶子直接就有了两个细菌,也就相当于调过了第一个瓶子在第一分钟的情况了。以后的情况就完全一致了,所以是59分钟。

【专业部分】(70分)

  1. 简述一下面向对象的特征,并举例说明你对面向对象的理解?(5分)

面向对象是基于万物皆对象这个哲学观点,把一个帝乡抽象成类,具体就是你吧一个对象的静态特征和动态特征抽象成属性和方法,也就是把一类事务的算法和数据结构封装在一个类之中,程序就是多个对象和互相间的通信组成的。

面向对象具有封装性,继承性,多态性。封装隐蔽了对象内部不需要暴漏的细节,似的内部细节的变动跟外界脱离,只依靠接口进行通信。封装性降低了编程的复杂性。通过继承,使得新建一个类变得容易,一个类从派生类哪里获得其非私有的方法和公用属性的繁琐工作交给了编译器。而继承和实现接口和运行时的类型标定机制所产生的多态,使得不同的类所产生的对象能够对相同的消息做出不同的反映,记得提高了代码的通用性。

总之,面向对象的特性提高了大型程序的重用性和可维护性。

  1. ArrayList和HsahSet的区别,HashMap和Hashtable的区别?(5分)

ArrayList和HashSet的区别:

ArrayList是一组有序的集合,存放的是对象的引用,而不是对象本身。存放的对象是可以重复的。

HashSet存放的对象是不可重复的。

HashMap和Hashtable的区别:

继承的类不同
HashTable是线程安全的,而HashMap是非线程安全的。
HashMap的key,value是允许null的,而HashTable不允许。且HashMap效率高。

  1. 线程同步的关键字是什么?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不需要捕获异常

  1. 列举你在项目中常用的设计模式(伪代码或类图),并说明每种设计模式的具体应用场景。(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。

  1. Spring中事务管理支持哪几种方式以及每种方式的具体使用方法。(5分)

    实现方式两种:

    编码方式;

    声明式事务管理方式。

    声明式事务管理是通过AOP技术实现的,实质就是:在方法执行前后进行拦截,然后在目标方法开始之前创建并加入事务,执行完成目标方法后根据执行情况提交后回滚事务。

声明式事务管理有两种方式:基于XML配置文件(拦截器 AOP),通过标签@Transaction注解

另一种答案:

1.每个bead都有一个事务代理

Hibernate的缓存等级及其特点(5分)
一级缓存:session级别的缓存,session关闭后,缓存就没有了

二级缓存:sessionFactory级别的缓存,它缓存的是对象

查询缓存:查询缓存也是sessionFactory级别的缓存,它缓存的是sql语句

一般二级缓存要和查询缓存配合使用,避免N+1的问题。更建议使用mamcatched单独做缓存。

  1. 至少写出一种11位手机号码的正则表达式。(5分)

^[1][358][0-9]{9}$

  1. 用简短的代码实现字符串“s tr in g”到“s tr in g”转换。即将多个空格转换为一个空格(5分)

String s = “s tr in g”;

S=s.replaceAll(“ +”,” ”);

  1. 使用Socket编写一个程序,客户端向服务器端发送请求(发送字符串即可),服务端接收后发送反馈信息.(10分)

TCP协议

网上例子很多 自己找。代码过长

  1. 用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高级软件工程师面试题

标签:算法 事务 class 使用 代码 si it java la

原文:http://www.cnblogs.com/chengxuyuanzhilu/p/4707787.html

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 脸上长了座疮怎么办 喝了啤酒吃柿子怎么办 脸上长了痤疮该怎么办 脸上老长闭口痘怎么办 右脸颊一直长痘怎么办 痘痘粉刺反复长怎么办 长痘留下的红印怎么办 熬夜长出的痘痘怎么办 脸上两边长痘痘怎么办 我左脸比右脸大怎么办 左脸莫名肿了怎么办 牙疼得半边脸痛怎么办 手和脸突然发麻怎么办 右半边脸麻木了怎么办 左边脸突然肿了怎么办 左半边脸皮肤疼怎么办 脸内侧的肉肿了怎么办 上火引起的脸肿怎么办 脸肿里面有硬块怎么办 内分泌失调引起的肥胖怎么办 宝宝接种证丢了怎么办 不给补办接种证怎么办 儿童接种证丢了怎么办 疫苗接种本丢了怎么办 脊灰滴剂滴多了怎么办 鞋小了挤脚趾头怎么办 大母脚趾头疼是怎么办 小脚趾内侧长茧怎么办 小脚趾肿了很痛怎么办 穿袜子大脚趾痛怎么办 脚指头长水泡很痒怎么办 走路脚打起泡了怎么办 剪完脚趾甲肿了怎么办 大脚趾关节处疼怎么办 战士10穿不进去怎么办 脚上皮肤干燥起皮怎么办 脚趾头冻了很痒怎么办 大脚趾里面有脓怎么办 大脚趾肉肿了怎么办 大脚趾边上肿了怎么办 大母脚趾关节疼怎么办