Java常见面试题_2016

来源:互联网 发布:linux 文件最后修改人 编辑:程序博客网 时间:2024/06/12 01:01

以下面试题来源:
上海龙泰信息技术有限公司
上海微企信息技术股份有限公司
上海爱信诺航天信息有限公司
用友软件公司
薪资范围:6000~7999
岗位:Java开发工程师 / 1年以下工作经验

1、下列标识符不合法的有( )         A.new      B.$Usdollars      C1234       D.car.taxi答案:ACD
2、下列说法错误的有( )       A. 数组是一种对象       B. 数组属于一种原生类       C. int number=[]={31,23,33,43,35,63}        D. 数组的大小可以任意改变  答案:BCD  
3、不能用来修饰interface的有( )          A.private         B.public         C.protected         D.static   答案:ACD   
4、提供Java存取数据库能力的包是( )          A.java.sql         B.java.awt         C.java.lang         D.java.swing   答案:A   
5、下列说法正确的有( )          A. class中的constructor不可省略          Bconstructor必须与class同名,但方法不能与class同名          Cconstructor在一个对象被new时执行          D. 一个class只能定义一个constructor   答案:C 
6、执行如下程序代码  a=0;c=0;                       do{                       --c;                       }while(a>0);   后,C的值是( )          A.0          B.1          C.-1          D.死循环  答案:C   
7、下列说法正确的有( )          A. 环境变量可在编译source code时指定          B. 在编译程序时,所能指定的环境变量不包括class path          C. javac一次可同时编译数个Java源文件          D. javac.exe能指定编译结果要置于哪个目录(directory)  答案:BCD 
8.下列哪一种叙述是正确的( )          A. abstract修饰符可修饰字段、方法和类          B. 抽象方法的body部分必须用一对大括号{ }包住          C. 声明抽象方法,大括号可有可无          D. 声明抽象方法不可写出大括号  答案:D   

9、Servlet的生命周期

1,初始化阶段,容器运行其init()方法2,响应客户请求阶段,调用service()方法,并自动派遣运行与请求对应的doXXX(post或者get)方法,3,终止阶段  调用destroy()方法将实例销毁。

10、Post和get的区别

1. get是从服务器上获取数据,post是向服务器传送数据。2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。5. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。 建议:1、get方式的安全性较Post方式要差些,包含机密信息的话,建议用Post数据提交方式;2、在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;

11、写一个Singleon 类

懒汉式:

public class Single{    private Single(){}    private static instance         = new Single();    public static Single getinstance(){        return instance;    }}

以上容易导致并发,下面的饿汉式加上了事务锁,防止并发
饿汉式:

public class Single{    private static Single instance;    private Single(){}    public sychronized static Single getinstance(){    if(instance==null){        instance = new Single();    }    return instance;    }}

需要使用此对象时,只要调取得实例的那个方法即可

Single single = Single.getInstance();

12、 jsp和serverlet的区别

  1. 简单的来说Jsp就是含有Java代码的html,而servlet是含有html的Java代码;
  2. Jsp最终也是被解释为servlet并编译再执行,Jsp不过是servlet的另一种编写方式;
  3. Jsp擅长表示,servlet擅长数据处理,在MVC三层结构中,Jsp负责V(视图),servlet负责C(控制),各有优势,各司其职。

13、Forward和Redirect的区别

前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;
后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。
所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

14、实现分页查询

Oracle实现:
从数据库表中第M条记录开始检索N条记录

SELECT *  FROM (SELECT ROWNUM r,t1.* From 表名称 t1 where rownum < M + N) t2  where t2.r >= M 

例如从表Sys_option(主键为sys_id)中从10条记录还是检索20条记录,语句如下:

SELECT *  FROM (SELECT ROWNUM R,t1.* From Sys_option where rownum < 30 ) t2  Where t2.R >= 10 

MySql实现:
MySQL数据库最简单,是利用mysql的LIMIT函数,LIMIT [offset,] rows从数据库表中M条记录开始检索N条记录的语句为:SELECT * FROM 表名称 LIMIT M,N。

例如从表Sys_option(主键为sys_id)中从10条记录还是检索20条记录,语句如下:

select * from sys_option limit 10,20 ;

再如在table_name表中,取前5条:

select * from table_name limit 5  

取第11条到第15条数据,共5条

select * from table_name limit 10,5 

15、String s=a,b,c,d,e, f,g 倒序输出,用Java代码实现。

String[] str = s.Split(',');string dec = "";for(int i = 0;i<str.lenth;i++){    if(i == str.length-1)    {        dec += str[str.length-1-i];    }    else    {        dec += str[str.length-1-i]+",";    }}System.out.println(dec);
0 0
原创粉丝点击