1、写一个方法,获取当前日期凌晨12点整的秒数,实现方法尽量简单高效。
2、用java实现,将a.bat的内容复制到b.bat,实现方法尽量简单高效。
3、String a ="abc"+"def"+"ghi"+"jkl";
String b = new StringBuilder("abc").append("def").append("ghi").toString();
String c = new StringBuffer("abc").append("def").append("ghi").toString();
给出以上三条语句执行的性能顺序,并说明原因。
4、简述Java Persistence API注解,简述entity的去重。
5、简述jdk5的新特性。
6、有一个5G的文件,是一个20G文件中的一部分,实现在20G文件中找出5G文件的位置。
7、需求:批量处理一堆QQ号码(几十万),在页面以文件形式上传给servlet处理(每个QQ号码处理耗时20ms),页面需要回显处理进度,类似windows的进度框,请写出servlet与页面交互的设计思路。
8、简述一下你常用的web服务器的优缺点。tomcat是一个java常用的web服务器,如果你用的不是tomcat服务器,请说明你使用非tomcat的原因。
9、先要做一个实时监控系统,有5000人的并发访问量,web采用java,数据库采用mysql,页面实现大量报表统计功能,如何搭建一个比较高效的web组合环境。
10、请描述一下struts+hibernate+spring这三个框架在扩展性和维护性上的优缺点。
参考答案:
1、此题目意思不是特别清楚,按照字面意思有两种理解,一种是获得凌晨12点整的秒数,也就是0,这个只要setSecond之后再getSecond即可,毫无意义;第二种是获取当前时间到凌晨12点秒数,这个比较符合正常逻辑。其程序如下:
public int getSecond()
{
Date currentDate = new Date();
int second = (currentDate.getHours()*60+currentDate.getMinutes())*60+currentDate.getSeconds();
}
2、BufferedReader能一下读取一行,所以效率高于BufferedInputStream。
public static void charCopyFile() throws IOException
{
FileReader input = new FileReader("a.bat");
BufferedReader inBuff = new BufferedReader(input);
FileWriter output = new FileWriter("b.bat");
BufferedWriter outBuff = new BufferedWriter(output);
String buff = null;
while((buff = inBuff.readLine())!=null)
{
outBuff.write(buff);
}
output.flush();
inBuff.close();
input.close();
outBuff.close();
output.close();
}
3、性能排序:1、3、2。
String是不可变类,但因为直接拼装的话,会在编译时就完成,只创建一个对象,所以效率最高,StringBuilder和StringBuffer相比,是线程安全的,需要增加同步操作,所以性能略低于StringBuffer。
4、JPA包括以下三个方面技术 ORM映射元数据,JPA支持xml和jdk5.0注释,元数据描述对象与表之间的映射关系,框架据此将实体对象持久化到数据库当中。 Java持久化API,用来操作实体对象,执行CURD操作,框架在后台替我们完成所有的事情开发者可以从JDBC和SQL代码中解脱出来。查询语言,这是持久化操作很重要的一个方面,通过面向对象而非面向数据库的查询数据,避免程序与SQL的紧密耦合。
基本注解元数据:
1>@Entity:将领域对象标注为一个实体,默认情况下类名为表名,通过name可以重新指定。
2>@Id:属性对应的表的主键。
3>@Column:属性对应的表字段。
4>@GeneratedValue:主键生成策略,通过startage属性指定。
5、jdk5新特性:
1>泛型(Generics)--为集合(collections)提供编译时类型安全,无需每刻从Collections取得一个对象就进行强制转换(cast)
2>增强的“for”循环(Enhanced For loop)--减少迭代器(iterator)的潜在错误(error-proneness)
3>自动封箱/自动解封(Autoboxing/unboxing)--无需在基本类型(primitive types)(例如double)和包装类型(wrapper types)(例如Double)之间人工地进行转换。
4>类型安全的枚举(Typesafeenums)--提供类型安全枚举模式的各项好处。
5>静态导入(Static import)--无需在使用其他类的静态成员变量前缀其类名.这将使得代码更为简洁。
6>元数据(Metadata)--使编程人员避免编写样板化代码(boiler plate code),并提供机会进行宣告式程式设计(declarative programming)。
7>可变长参数,不用再把String.class封装在一个数组中了,可以直接这么用public void method(String...)。
8>格式化输出,如:System.out.printf("%d",4);
9>注释,描述代码的代码,给编译器看,作用是规范编译器的语法。分为标记注释,单值注释,多值注释,自定义注释。
8、tomcat优点:
1>免费
2>开源
3>支持最新标准
4>更新快
5>跨平台
6>部署方便
tomcat缺点:
1>编码问题
2>默认配置下,容易内存溢出