Java常见面试题_2016

以下面试题来源:
上海龙泰信息技术有限公司
上海微企信息技术股份有限公司
上海爱信诺航天信息有限公司
用友软件公司
薪资范围: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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值