亿联本科java_厦门亿联2018面试题

一、选择器

public class EqTest {

public static void main(String[] args) {

EqTest e = new EqTest();

}

public EqTest() {

String s = "Java";

String s2 = "java";

//if (s.equalsIgnoreCase(s2))

{

System.out.println("相等");

} else {

System.out.println("不相等");

}

}

}

在上面的java代码的注释行位置,放置(C)测试代码能输出“相等”的结果(单选)

C:if (s.equalsIgnoreCase(s2))

2.研究下马的java代码:

public class TestException {

public static void main(String[] args) {

int n[] = {

0, 1, 2, 3, 4

};

int sum = 0;

try {

for (int i = 1; i < 6; i++) {

sum = sum + n[i];

}

System.out.println("sum+" + sum);

} catch (ArrayIndexOutOfBoundsException e) {

System.out.println("数组越界");

} finally {

System.out.println("程序结束");

}

}

}

输出结果是(C);

结果:数组越界 程序结束

3.考虑下列java代码:

public class A {

public static void main(String[] args) {

try {

System.out.println("HelloWorld!");

}

}

}

程序报的错为:Syntax error, insert "Finally" to complete BlockStatements

其中错误的是(A)。(单选)

A:没有catch和finally块   B:没有抛出异常的代码不能出现在try代码块内

C:如果没有catch块而使用try,main()会总是抛职异常   D:class A 没有throws IOException

try要一个catch或者finally

4.研究下面的java代码:

switch (x) {

case 1:

System.out.println(1);

case 2:

case 3:

System.out.println(3);

case 4:

System.out.println(4);

}

当x=2;时,运行结果是(C)。(单选)

C:单选结果是3和4

5.在java中,关键字(A)使类不能派生出子类(单选)

A:final

6.下面关于servlet的陈述正确的是:(B C)

A:我们在浏览器的地址栏直接输入要请求的Servlet,该servlet默认会使用doPost方法处理请求

B:servlet运行在服务端

C:servlet的生命周期包括:实例化,初始化,服务,破坏,不可以用

D:servlet不能向浏览器发送Html标签

注:Servlet生命周期分为三个阶段:

1、初始化阶段 , 调用init()方法;

2、响应客户请求阶段, 调用service()方法;

3、终止阶段, 调用destroy()方法。

7.在JAVA编程中,以下(B)命令能将java源文件转换为类文件。(单选)

A:appletviewer(小程序浏览器)  B:javac

C:java      D:以上所有选项都不正确

javac是JDK的标准编译工具,常见的形式为:javac 。它可能的选项包括:

-g:生成所有调试信息。

-g:none:生成无调试信息。

-g:{lines,vars,source}:生成只有部分调试信息。

-nowarn:生成无警告。

-verbose:输出关于编译器正在做的信息。

-deprecation:输出使用了不鼓励使用的API的源程序位置。

-classpath :指定用户类文件的位置。

-sourcepath :指定输入源文件的位置。

-bootclasspath :覆盖自举类文件的位置。

-extdirs :覆盖安装的扩展类的位置。

-d :指定输出类文件的位置。

-encoding :指定源文件中所用的字符集编码。

-target :生成指定虚拟机版本的类文件。

java命令是JDK默认的java执行程序,在这里值得注意的是在执行带包的.class文件时,需要使用标准的Java包形式。

Windows下文件名为jar.exe,Linux下文件名为jar。它的运行需要用到JDK安装目录下lib目录中的tools.jar文件。jar命令行格式为:

jar {ctxu}[vfm0M] [jar-文件] [manifest-文件] [-C 目录] 文件名

其中{ctxu}是jar命令的子命令,每次jar命令只能包含一个子命令,这些子命令含义如下。

-c:创建新的JAR文件包。

-t:列出JAR文件包的内容列表。

-x:展开JAR文件包的指定文件或者所有文件。

-u:更新已存在的JAR文件包(添加文件到JAR文件包中)。

[vfm0M]中的选项可以任选,也可以不选,它们是jar命令的选项参数。

-v:生成具体报告并打印到标准输出。

-f:指定JAR文件名,通常这个参数是必须的。

-m:指定需要包含的MANIFEST清单文件。

-0:只存储,不压缩,这样产生的JAR文件包会比不用该参数产生的体积大,但速度更快。

-M:不产生所有项的清单(MANIFEST〕文件,此参数会忽略-m参数。

8.下面对http请求消息使用Get和Post方法陈述正确的是:(B C)

A:post方法提交信息可以保存为书签,而get则不行

B:可以使用GET方法提交敏感数据

C:使用POST提交数据量没有限制

D:使用post方法提交数据比get方法快

注:

A错,说的刚好相反

可以使用GET方法提交敏感数据,但不安全,所以不建议

GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据

post方法提交数据比get方法慢

GET的优点:

1.执行效率比POST高。

2.可以通过url传递数据,查找数据的时候就会体现到它的好处。

GET的缺点:

1.安全性很低,因为上传的数据都会显示在url上,所以一般用在上传无关紧要的数据上。

2.上传的数据量较小,一般不能超过4K.这也是因为url的长度而被限制的。

POST优点:

1.安全性高,但是也不是很高,如果想要高安全性的话就用https传输协议。

2.上传的数据量比GET大得多。“理论上讲,POST是没有大小限制的,HTTP协议规范也没有进行大小限制,说“POST数据量存在 80K/100K的大小限制”是不准确的,POST数据是没有限制的,起限制作用的是服务器的处理程序的处理能力。”

POST缺点:

1.执行效率比GET低,但是现在的计算机都很强大,这些几乎可以忽略不计,所以建议一般都使用POST方式。

2.不可以通过url传递数据,有时候可能会不方便.

9.在web应用程序中web.xml配置类Servlet的信息,如果你的项目为LoginDemo,那么最可能位于哪个目录下(D)

A:LoginDemo/   B:LoginDemo/src

C:LoginDemo/WEB-INF/bin/  D:LoginDemo/WEB-INF/

注:web.xml文件是用来初始化配置信息,web.xml是放置在WEB-INF目录中

(1)/WEB-INF/web.xml 是部署描述文件

(2)/WEB-INF/classes 用来放置应用程序用到的自定义类(.class),必须包括包(package)结构。

(3)/WEB-INF/lib 用来放置应用程序用到的JAR文件。

10.jsp在转移阶段生成文件的扩张名是(A,B)

A:class  B:java

C:exe    C:bin

注:web容器处理JSP文件请求的三个阶段

翻译阶段:这一个阶段,编写好的jsp文件首先被web容器中的jp引擎转换成java源代码

编译阶段:jsp文件所翻译的java源代码会被编译成可执行的字节码

请求阶段:当容器接受了客户端请求之后,就执行jsp编译的字节码文件,处理完成请求之后,容器再把生成的页面反馈给客户端显示。

简答题

1.String和StringBuder,stringbuff的区别?

对字符串操作三者在执行速度方面的比较

StringBuilder StringBuffer String

String

String:字符串常量

StringBuffer:字符创变量

StringBuilder:字符创变量

从上面的名字可以看到,String是“字符创常量”,也就是不可改变的对象。

String s = "abcd";

s = s+1;

System.out.print(s);// result : abcd1

JVM是这样解析这段代码的:首先创建对象s,赋予一个abcd,然后再创建一个新的对象s用来;执行第二行代码,也就是说我们之前对象s并没有变化,所以我们说String类型是不可改变的对象了,由于这种机制,每当用String操作字符串时,实际上是在不断的创建新的对象,而原来的对象就会变为垃圾被GC回收掉,可想而知这样执行效率会有多底。

而StringBuffer与StringBuilder就不一样了,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,这样就不会像String一样创建一些而外的对象进行操作了,当然速度就快了。

StringBuilder:线程非安全的

StringBuffer:线程安全的

当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。

我的博客里有关于字符串的详解http://www.cnblogs.com/yangliguo/p/7496431.html

2、描述下HsahMap、hashtable、hashset的共同点与不同点

编程题

编写一个工具类CollectionTools,为其编写一个方法insertSect,功能是计算连个集合(Collection)的交集:传入参数是两个集合,返回结果是计算出来的交集。

import java.util.HashSet;

import java.util.Set;

public class CollectionTools {

public static Set insertSet(Set C1, Set C2) {

C1.retainAll(C2);

System.out.println(C1);

return C1;

}

public static void main(String[] args) {

Set c1 = new HashSet();

c1.add(3);

c1.add(2);

Set c2 = new HashSet();

c2.add(2);

c2.add(4);

System.out.println(CollectionTools.insertSet(c1, c2));

}

}

也可以用依次读出数据进行比较简单然后把相同的写到一个集合中。或者把两个集合的数据放到set集合中利用set的不含重复元素得到一个并集,然后求得他们的交集。

2.编写一个对数据库表t_user进行update操作的完整java代码,请参考链接数据库和异常等的处理

e330badefbe423f1376a3f6935d80c74.png

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;

public class main {

public static void main(String[] args) {

//声明Connection对象

Connection con;

//驱动程序名

String driver = "com.mysql.jdbc.Driver";

//URL指向要访问的数据库名mydata

String url = "jdbc:mysql://localhost:3306/sqltestdb";

//MySQL配置时的用户名

String user = "root";

//MySQL配置时的密码

String password = "123456";

//遍历查询结果集

try {

//加载驱动程序

Class.forName(driver);

//1.getConnection()方法,连接MySQL数据库!!

con = DriverManager.getConnection(url,user,password);

//2.创建statement类对象,用来执行SQL语句!!

Statement statement = con.createStatement();

//要执行的SQL语句

String sql = "update t_user set id="+user.getId+"name"=user.getName+"login_name"+user.getLogin_name+"role_id"+user.getRole_id+"password"+user.getPsssword+"mobile"+user.getMobile;

//3.ResultSet类,用来存放获取的结果集!!

int rs = statement.execute(sql);

con.close();

} catch(ClassNotFoundException e) {

//数据库驱动类异常处理

System.out.println("Sorry,can`t find the Driver!");

e.printStackTrace();

} catch(SQLException e) {

//数据库连接失败异常处理

e.printStackTrace();

}catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}finally{

System.out.println("数据库数据成功获取!!");

}

}

}

数据库连接方法比较多这里是最基础的。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值