tencent intervie

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>默认配置下,容易内存溢出


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值