以下面试题来源:
上海龙泰信息技术有限公司
上海微企信息技术股份有限公司
上海爱信诺航天信息有限公司
用友软件公司
薪资范围:6000~7999
岗位:Java开发工程师 / 1年以下工作经验
1、下列标识符不合法的有( )
A.new
B.$Usdollars
C.1234
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不可省略
B. constructor必须与class同名,但方法不能与class同名
C. constructor在一个对象被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的区别
- 简单的来说Jsp就是含有Java代码的html,而servlet是含有html的Java代码;
- Jsp最终也是被解释为servlet并编译再执行,Jsp不过是servlet的另一种编写方式;
- 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);