校园招聘笔试题java

2024-06-29

校园招聘笔试题java(共11篇)

篇1:校园招聘笔试题java

网易校园招聘杭州Java笔试题

地点:杭州

职位:java研发

第一部分:计算机科学基础

(注:所有职位必做)

1.(2分)最坏情况下时间复杂度为O(nlogn)的排序算法有

A、基数排序 B、归并排序、C、堆排序 D、快速排序

2.(2分)以下说法正确的有()

A、有m阶B-树中,所有的非终端节点至少包含m/2个节点

B、若一个叶节点是某二叉树中的中序遍历的最后一个节点,同时它也是该二叉树前序遍历的最后一个节点

C、插入排序,堆排序,快速排序算法中,快速排序的速度是最快的,所需的附加空间也是最少的

D、n个数中已知有k个关键字hash值相同,若用线性探测法将它们存入散列表中,至少需要进行k(k+1)/2次探测

3.(2分)有一个长度为7的整形数组,里面存储了采用完全二叉树实现的最小堆,该数组中的所有元素都紧密存储,没有空隙,请问,该数组中可能的元素序列是:()

A、1 2 3 4 5 6 7

B、1 2 4 3 5 6 7

C、1 2 5 3 4 6 7

D、1 4 2 3 5 6 7

4.(2分)一个非连通无向图(无自回路和多重边)有66条边,那么它至少有()个顶点

A、11 B、12 C、13 D、14

5.(2分)请问变量t的最终结果是多少?()

int t=125

t=t&27

t=t^31

A、6 B、C、7 D、26

6.(2分)欧几里得的《几何原本》描述了最解大公约数的算法,针对两个整型a,b(a>b>0)其伪代码如下,请估算该算法的复杂度()

god(a,b)

if b=0

then return god(b,a mod b)

A、O(lgb) B、O(a*b) C、O(a*a) D、O(b*b)

7.(2分)当一个TCP连接被正常关闭时,主动关闭一方的.状态变迁顺序正确的是:()

A、FIN_WAIT1->FIN_WAIT2->TIME_WAIT

B、SYNC_SENT->LAST_ACK->CLOSED

C、FIN_WAIT1->FIN_WAIT2->CLOSED

D、SYNC_SENT->LAST_ACK->TIME_WAIT

8.(2分)OSI七层模型中从低到高(即第一层为物理层)的第三层和第六层分别是:()

A、数据链路层,会话层; B、数据链路层,应用层;

C、网络层,传输层; D、网络层,表示层

9.(2分)通过磁盘冗余阵列(Redundant Arrays of Inexpensive Disks,RAID)能有效的提升数据存储的可靠性或者访问性能,请问以下哪些冗余策略能增加数据的可靠性?()

A、Raid B、Raid 1 C、Raid 5 D、Raid 6

10.(2分)在分布式系统的实现中,不问的进程之间常常需要交换信息,请问分别运行在两台不同主机的进程A,B,他们之间有哪些常见的策略可以进行通信?()

A、共享内存 B、Unix Domain Socket C、管道 D、tcp/ip 协议 E、UDP 协议

11.(2分)可以用来检测多个数据位出错的校验码有:()

A、奇偶校验码 B、CRC码 C、BCD码 5 D、海明码

12.(2分)以下属于对称加密算法的有:()

A、DES和DSA B、RSA和MD5 C、IDEA和RC4 D、SHA和EIGamal

13.(5分)使用伪代码描述勇于字符串匹配的KMP算法:计算该算法最坏情况下的时间复杂度,并给出最坏情况的字符串样式,

14.(5分)假设当前系统底层提供了Compare&Set操作函数

声明:bool CAS(type*ptr,type oldval,type newval)

功能:当输入的oldval和ptr指针指向的当前值一致时,ptr指针指向的值将被设置为newval,并返回TRUE:否则返回FALSE.

特性:1.保证该函数执行的原子性

2.支持Safe-Memory-Reclamation特性。即,若发现ptr指向的内存和当前线程最后一次访问时发生过变化,则返回FALSE

请利用该CAS操作实现基于链表的无锁队列,队列长度无限。写出必要的数据结构,和入队/出队的伪代码。

篇2:校园招聘笔试题java

第一部分 选择题

单选题。

1. Java中,关于char类型叙述错误的是(C)

A.占2字节

B.可以存储一个英文字母

C.不能存储一个汉字

D.其对应的封装类是Character

2.下列代码中,将引起编译错误的行是(B)

1)public class Exercise{

2)public static void main(String args[]){

3)float f=0.0;

4)f+=1.0;

5)}

6)}

A.第2行

B.第3行

C.第4行

D.第6行

3.下面程序运行后的结果是什么?(A)

Public class Test{

Static Boolean foo(char c){

System.out.print(c);

Return true;

}

Public static void main(String[] argv){

Int i=0;

For(foo(„A‟);foo(„B‟)&&(i<2);foo(„C‟)){

i++;

foo(„D‟);

}

}

}

A.ABDCBDCB

B.ABCDABCD

C.Compilation fails.D.An exception is thrown at runtime.4.下面正确的是(A)

A.在java中类只允许单一继承

B.在java中一个类只允许实现一个借口

C.在java中类不能同时继承一个类和实现一个借口

D.在java中一个接口只能继承一个接口

5.下列叙述中,错误的是(B)

A.File类能够存储文件

B.File类能够读写文件

C.File能够建立文件

D.File类能够获取文件目录信息

6.下列关于java多线程并发控制机制的叙述中,错误的是(B)

A.java中对共享数据操作的并发控制是采用加锁技术

B.线程之间的交互,提倡采用suspend()/resume()方法

C.共享数据的访问权限都必须定义为private

D.java中没有提供检测与避免死锁的专门机制,但应用程序员可以采用某些策略防止

死锁的发生

7.Jsp页面中哪句有错?(A)

A.<>

B.<%!request.isUserInRole(“manager”)%>

C.<%=request.getRemoteHost()%>

D.<% out.println(“Hello.”);%>

8.关于Servlet的描述正确的是?(B)

A.Servlet在init方法可以处理application的配置参数

B.每次请求会依次调用servlet的init,service,destroy方法

C.在Servlet中定义的类的实例变量可以被多次请求共享使用

D.用户可以创建Servlet的实例

9.下面说法正确的是

A.客户端可以直接使用实体Bean

B.会话Bean,消息Bean都是同步的C.无状态会话Bean更容易在集群环境布署

D.状态会话Bean不可以被重用

10.下面说法错误的是

A.SQLException的getErrorCode返回的是厂商相关错代码

B.使用一个Connection可以创建多个Statement

C.当Statement关闭时,相关连的ResultSet也会被关闭

D.JNDI可以用于访问网络目录和文件

多选题

1.执行下列代码后,那个结论是正确的?(B)

String[]s=new String[10];

A.s[10]为 “ “;

B.s[9]为null;

C.s[0]为 未定义;

D.s.length 为10

2.下列那个方法是对方法public void add(int a){}合理的重载?(B,C,D)

A.public int add(int a);

B.public void add(long a);

C.public void add(int a,int b)

D.public void add(float a)

3.下面继承A 的类中的方法定义哪两个是正确的?(A,C)

Class A {

Protected int method1(int a, int b){return 0;}}

A.public int method1(int a,int b){return 0;}

B.private int method1(int a,int b){return 0;}

C.public short method1(int a ,long b){return 0;}

D.static protrcted int method1(int a, int b){return 0;}

4.下面方法运行后,在控制台上那些将会被显示?(B,C,D)

Publicvoid example(){

Try{

Unsafe(0;

System.out.println(“Test 1”);

}catch(SafeException e){

System.out.println(“Test 2”);

}Finally{

System.out.println(“Test 3”);

}

System.out.println(“Test 4”);

}

A.Test 1

B.Test 2

C.Test 3

D.Test 4

简答题

1. 调试一个数据库操作的程序时,后台报告 IoException: The Network Adapter could not

establish the connection 错误,如何解决?

这个异常的出现一般与数据库和你的PC的设置有关这种异常的出现大致上有下面几种:1。IP错误。在设置URL时错误,例如:jdbc:oracle:thin:@192.168.0.36:1521:sharp

数据库服务器不正确:ping 服务器IP是否正确。不正确,将URL更改为正确

端口号错误:一般不会错误。进行一下操作:在DOS上键入sqlplus,检查oracle是否开启 一却正常,2。防火墙如果机器上安装有放火墙,可能是服务器端口号屏蔽而造的。关闭防火墙后,尝试重新连接。3。数据库监听未启动 修改PC上注册表中的ImagePath值。

2.数据库表结构如下;

学生(学号,名称)

科目(科目号,科目名称,科目学分)

得分(学号,科目号,得分)

编写SQL语句,查询学分之和大于20,且科目平均得分大于4.2的学生名单。

Select * from 学生 where 学号 in(select 学号 from 科目 join 得分 on 科目.科目号=得分.科目号 group by 学号 having avg(得分)>20 and sum(科目学分)>20)

编程题

1.费波那其数列,1,1,2,3,5……编写程序求第十项(不能用递归)

public class Test {

public static void main(String args[]){

int n=10;

int a=1, b=1, temp;

int sum=2;

for(int i=3;i<=n;i++){

temp=a+b;a=b;b=temp;

sum=sum+temp;

}

2.用数据结构描述图,比设计方法判断图是否连通。

3.设计一个排序接口,并编写接口实现。将对象数组(Object[]array)进行升序排序,对相间的大小比较策略可以定制扩展。(例如,对于人员,可以使用相同排序算法,不同的比较策略方便的实现按体重、身高或年龄等属性排序)。

篇3:校园招聘笔试题java

随着时代的发展和计算机自动化的进步, 各种各样的考试多如牛毛。试题中包括大量的试题, 这无疑增加了出题老师的组题难度和工作量。为适应这类处理事业的大规模发展, 一个高质量的、高效率的试题库管理系统就应运而生。随着国内外计算机网络的不断的普及, 通过努力研究, 试题库管理系统就被运用到计算机中, 应用于无纸化考试等领域。

2 本研究使用的基础理论

2.1 数据库系统。

Microsoft SQL Server 2000是一个全面的数据库平台, 使用集成的商业智能工具提供了企业级的数据管理。Microsoft SQL Server 2005数据库引擎为关系型数据和机构化数据提供了更安全可靠的存储功能, 使您可以构建和管理用于业务的高可用和高性能的数据应用程序[1]。

2.2 Java语言。

Java技术具有卓越的通用性、高效性、平台移植性和安全性, 广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网, 同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下, Java更具备了显著优势和广阔前景[3]。

2.3 Eclipse环境。

Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言, 它只是一个框架和一组服务, 用于通过插件组件构建开发环境。幸运的是, Eclipse附带了一个标准的插件集, 包括Java开发工具 (Java Development Kit, JDK) 。由于Eclipse中的每样东西都是插件, 对于给Eclipse提供插件, 以及给用户提供一致和统一的集成开发环境而言, 所有工具开发人员都具有同等的发挥场所。

3 试题库管理系统需求分析

3.1 需求概述。

用户管理:管理员要为每个老师、学生建立账户, 并进行用户的身份验证。老师权限包括增加、删除、修改、查询试题和试卷。学生权限为查看试题及其答案。

试题库管理:老师可以按章节、知识点与难度进行习题的输入与维护 (包括增加试题, 删除试题, 修改试题, 查询试题) 。管理员对试题的删除进行重复验证。

试题管理:老师可以向系统提出要求 (按章节、知识点与难度设定习题数目) , 生成小测验, 并可以对测验进行管理。系统通过生成的试题, 给出试题答案。

数据库备份管理:管理员进行数据库的备份和维护 (恢复) 。

3.2 试题库管理系统总流程图 (图1)

4 试题库管理系统设计

4.1 E-R图设计。

E-R图是描述系统数据库中的各个表之间关系的图形。它能够直观的反映系统中各个表之间的联系以及相互之间调用的关系。在E-R图中, 通常采用方框来表示实体, 采用菱形来表示联系, 采用椭圆形来表示属性。

本系统是基于Java技术的试题库管理系统的应用与研究, 通过对系统局部应用的选择, 逐一设计出了分E-R图, 并对各个分E-R图进行合并, 最后生成总体的试题库通讯录管理系统的E-R图, 如图2所示。

4.2 系统功能设计。

该软件具有如下主要功能:4.2.1管理员模块:a.登陆身份验证。b.用户信息管理。4.2.2老师模块:a.添加试题。b.删除试题。c.修改试题。d.组成试卷。4.2.3学生模块:a.试题查询。b.答案查询。

5 总结与展望

本系统开发目的是帮助教学单位实现考务工作的规范化, 自动化。为学校的信息化建设提供一个实用的试题库管理平台。系统具有良好的人机界面和易操作性, 特别是组题模块, 界面友好、层次清楚、操作简单, 能够科学、高效地实现试题的选取和组题。极大地减轻了教师的工作负担, 提高了命题工作的效率。

通过这一段时间的努力, 试题库管理系统已经形成基本的雏形, 试题查询, 试题增加, 试题删除、试题修改等功能已经能够稳定运行。特别是其中的核心部分题库管理与试题管理能够通过良好的用户界面, 根据教师的需要生成所需要试题。因此, 试题库管理系统朝数字化、无纸化、智能化、综合化的方向发展, 并为进一步实现完善的计算机试题库管理系统和全校信息系统打下良好的基础。

参考文献

[1]萨师煊, 王珊.数据库系统概论[M].北京:高等教育出版社, 1991.

[2]黄维通.SQL Server 2000简明教程[M].北京:清华大学出版社, 2002.

[3]沈泽刚, 秦玉平.Java Web编程技术[M].北京:清华大学出版社, 2010, 3.

[4]陈刚.Eclipse从入门到精通[M].北京:清华大学出版社, 2005, 4.

篇4:校园创业,从隐形笔开始

要说创业,好像言过其实了,自己家境一般,平时的生活费也是勉勉强强够用。哪来钱创业啊!于是他开始观察周围的同学怎么做。其实,校园里的活跃分子还真不少,什么代售手机充值卡、网游卡,什么培训或产品的校园代理……纵观群情,胡俊觉得有的太耽搁学习时间,有的做起来太简单,锻炼不了什么能力且无趣味,还不如自己当老板做点小本生意。

无意间,他在到杂志上介绍的隐形笔很有趣。为什么叫隐形笔呢?因为在任何纸张上书写后,可以完全看不到任何字迹。即使很仔细地观看也是完全察觉不到的,在正常的光线下显示为完全隐形,但在用笔尾的荧光灯的照射下能清晰的显示出字迹,才因此得名。

隐形笔的功能更是令年轻人爱不释手:用此笔写的日记不怕其他人偷看;作为情人朋友间秘密书写工具使用,或许它带给你的创意可以帮您轻松追到您心仪已久的MM或GG;用笔尾的紫光灯一照,有无水印立刻现影,可以护,从此银行卡可设复杂密码,不再是“6个6”之类,家中隐秘记录不怕忘记;用神奇隐型笔书写留言或留下暗号,普通人无法洞悉;即使在黑暗中,文字内容都可以一览无遗;晚上可做微型电筒,照亮您要照亮的地方。

胡俊欣喜若狂,立即从杂志社进货200支,然后在男生宿舍“挨家串巷”的推销起来。

男生一听这个可以用来写情书,给意中人一个惊喜,无不慷慨解囊!在女生公寓楼下,大家一听可以写秘密日记,也都欢雀购买!几天下来,胡俊轻松就卖完了这200支,虽然只赚了200多块钱,但这种“创业”过程让他成熟了许多,生活也丰富突然多彩起来。下一步,他准备把战线拉到附近的其他院校去,自己只做批发。别人来给自己代售,做个名副其实的小老板!

经营方式:

这是一种一支笔还附带两个笔芯的隐形笔,吸卡包装,笔身塑料,色彩鲜艳,造型美观,适合学生族使用。2元/支。200支起批,零售价在3至5元。

该笔同时具有验钞功能,携带方便,是娱乐送礼的上佳礼品!自己用、送人、促销等广泛的用途就是它巨大的市场,赶快拨打029—82372285咨询吧!

篇5:精选Java笔试题

A start() B run() C exit() D getPriority()

答案:ABD

解析:看Java API docs吧:docs.oracle.com/javase/7/docs/api/,exit()是System类的方法,如System.exit(0)。

2. 下面关于java.lang.Exception类的说法正确的是()

A 继承自Throwable B Serialable CD 不记得,反正不正确

答案:A

解析:Java异常的基类为java.lang.Throwable,java.lang.Error和java.lang.Exception继承 Throwable,RuntimeException和其它的Exception等继承Exception,具体的RuntimeException继承RuntimeException。

扩展:错误和异常的区别(Error vs Exception)

1) java.lang.Error: Throwable的子类,用于标记严重错误。合理的应用程序不应该去try/catch这种错误。绝大多数的错误都是非正常的,就根本不该出现的。

java.lang.Exception: Throwable的子类,用于指示一种合理的程序想去catch的条件。即它仅仅是一种程序运行条件,而非严重错误,并且鼓励用户程序去catch它。

2) Error和RuntimeException 及其子类都是未检查的异常(unchecked exceptions),而所有其他的Exception类都是检查了的异常(checked exceptions).

checked exceptions: 通常是从一个可以恢复的程序中抛出来的,并且最好能够从这种异常中使用程序恢复。比如FileNotFoundException, ParseException等。检查了的异常发生在编译阶段,必须要使用try…catch(或者throws)否则编译不通过。

unchecked exceptions: 通常是如果一切正常的话本不该发生的异常,但是的确发生了。发生在运行期,具有不确定性,主要是由于程序的逻辑问题所引起的。比如ArrayIndexOutOfBoundException, ClassCastException等。从语言本身的角度讲,程序不该去catch这类异常,虽然能够从诸如RuntimeException这样的异常中catch并恢复,但是并不鼓励终端程序员这么做,因为完全没要必要。因为这类错误本身就是bug,应该被修复,出现此类错误时程序就应该立即停止执行。 因此,面对Errors和unchecked exceptions应该让程序自动终止执行,程序员不该做诸如try/catch这样的事情,而是应该查明原因,修改代码逻辑。

RuntimeException:RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等。

处理RuntimeException的原则是:如果出现 RuntimeException,那么一定是程序员的错误。例如,可以通过检查数组下标和数组边界来避免数组越界访问异常。其他(IOException等等)checked异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误。

3. 下面程序的运行结果是()

String str1 = “hello”;

String str2 = “he” + new String(“llo”);

System.err.println(str1 == str2);

答案:false

解析:因为str2中的llo是新申请的内存块,而==判断的是对象的地址而非值,所以不一样。如果是String str2 = str1,那么就是true了。

4. 下列说法正确的有()

A. class中的constructor不可省略

B. constructor必须与class同名,但方法不能与class同名

C. constructor在一个对象被new时执行

D.一个class只能定义一个constructor

答案:C

解析:这里可能会有误区,其实普通的类方法是可以和类名同名的,和构造方法唯一的区分就是,构造方法没有返回值。

5. 具体选项不记得,但用到的知识如下:

String []a = new String[10];

则:a[0]~a[9] = null

a.length = 10

如果是int []a = new int[10];

则:a[0]~a[9] = 0

a.length = 10

6. 下面程序的运行结果:()

复制代码

public static void main(String args[]) {

Thread t = new Thread() {

public void run() {

pong();

}

};

t.run();

System.out.print(“ping”);

}

static void pong() {

System.out.print(“pong”);

}

复制代码

A pingpong B pongping C pingpong和pongping都有可能 D 都不输出

答案:B

解析:这里考的是Thread类中start()和run()方法的区别了。start()用来启动一个线程,当调用start方法后,系统才会开启一个新的线程,进而调用run()方法来执行任务,而单独的调用run()就跟调用普通方法是一样的,已经失去线程的特性了。因此在启动一个线程的时候一定要使用start()而不是run()。

7. 下列属于关系型数据库的是()

A. Oracle B MySql C IMS D MongoDB

答案:AB

解答:IMS(Information Management System )数据库是IBM公司开发的两种数据库类型之一;

一种是关系数据库,典型代表产品:DB2;

另一种则是层次数据库,代表产品:IMS层次数据库。

非关系型数据库有MongoDB、memcachedb、Redis等。

8. GC线程是否为守护线程?()

答案:是

解析:线程分为守护线程和非守护线程(即用户线程)。

只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。

守护线程最典型的应用就是 GC (垃圾回收器)

9. volatile关键字是否能保证线程安全?()

答案:不能

解析:volatile关键字用在多线程同步中,可保证读取的可见性,JVM只是保证从主内存加载到线程工作内存的值是最新的读取值,而非cache中。但多个线程对

volatile的写操作,无法保证线程安全。例如假如线程1,线程2 在进行read,load 操作中,发现主内存中count的值都是5,那么都会加载这个最新的值,在线程1堆count进行修改之后,会write到主内存中,主内存中的count变量就会变为6;线程2由于已经进行read,load操作,在进行运算之后,也会更新主内存count的变量值为6;导致两个线程及时用volatile关键字修改之后,还是会存在并发的情况。

10. 下列说法正确的是()

A LinkedList继承自List

B AbstractSet继承自Set

C HashSet继承自AbstractSet

D WeakMap继承自HashMap

答案:AC

篇6:关于Java程序笔试题

闰年特点:

①、普通年能被4整除;且不能被100整除的为闰年。(如就是闰年,19不是闰年)

②、世纪年能被400整除的是闰年。(如是闰年,19不是闰年) ③、对于数值很大的年份,既能整除3200,又能整除172800是闰年。如172800年是闰年,86400年不是闰年(因为虽然能整除3200,但不能整除172800)。

2、编写一个Java程序在屏幕上输出1!+2!+3!+??+10!的和。

3、打印出所有的 “水仙花数 ”,所谓 “水仙花数 ”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 “水仙花数 ”,因为153=1的三次方+5的三次方+3的三次方。

4、利用递归方法求5!。

5、一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

6、编写一个Java应用程序,要求如下

1)从控制台输入两个字符串;

2)重载三个方法,方法名add,分别完成字符串拼接、整数相加、浮点数相加,返回 String,并在控制台分别输出返回结果;

3)要求处理异常,输入字符串不符合要求时给出提示,不能使程序崩溃;

4)输入“esc”时退出程序,否则可以重复执行。

7、、有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

8、大整数计算器,要求从控制台输入。

(例如:100000000000000000000+0000000000000000)

9、(1)编写一个圆类Circle,该类拥有:

①一个成员变量

Radius(私有,浮点型); // 存放圆的半径;

②两个构造方法

Circle( ) // 将半径设为0

Circle(double r ) //创建Circle对象时将半径初始化为r

③ 三个成员方法

double getArea( ) //获取圆的面积

double getPerimeter( ) //获取圆的周长

void show( ) //将圆的半径、周长、面积输出到屏幕

篇7:Android Java笔试题

Final是修饰符 表示类不能被继承 方法不能被重载,重写 变量不能被修改等

Finally是异常处理时的一个无论如何都会被执行的程序块

Finaliz方法是垃圾收集器删除对象之前对这个对象调用的进行清理工作的方法

2、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?

可以

3、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?

值传递

作用域public,private,protected,以及不写时的区别

用最有效率的方法算出2乘以8等於几 2《3

运行时异常与一般异常有何异

编译器要求声明并抛出一般异常 但不必声明抛出运行时异常 由系统处理

垃圾回收的优点和原理。并考虑2种回收机制

回收机制有分代复制垃圾回收 标记垃圾回收 和增量垃圾回收

4、描述一下JVM加载class文件的原理机制?

篇8:常见java应聘笔试题

1. Java中sleep和wait的区别

① 这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。

sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。

② 锁: 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。

sleep不出让系统资源;wait是进入线程等待池等待,出让系统资源,其他线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用notify/notifyAll唤醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。

Thread.sleep(0)的作用是“触发操作系统立刻重新进行一次CPU竞争”。

③ 使用范围:wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用。

synchronized(x){ x.notify() //或者wait() }

2. Java中HashMap和HashTable的区别

① 历史原因: Hashtable是给予陈旧的Dictonary类的, HashMap是Java1.2引进的Map接口的一个实现

② HashMap允许空的键值对, 而HashTable不允许

③ HashTable同步,而HashMap非同步,效率上比HashTable要高

3. 请简述在异常当中,throw和throws有什么区别

① throw代表动作,表示抛出一个异常的动作;throws代表一种状态,代表方法可能有异常抛出

② throw用在方法实现中,而throws用在方法声明中

③ throw只能用于抛出一种异常,而throws可以抛出多个异常

4. 内存溢出和内存泄露的区别

内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。

内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。

memory leak会最终会导致out of memory!

内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是产生溢出。

内存泄漏是指你向系统申请分配内存进行使用(new),可是使用完了以后却不归还(),结果你申请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。一个盘子用尽各种方法只能装4个果子,你装了5个,结果掉倒地上不能吃了。这就是溢出!比方说栈,栈满时再做进栈必定产生空间溢出,叫上溢,栈空时再做退栈也产生空间溢出,称为下溢。就是分配的内存不足以放下数据项序列,称为内存溢出。

以发生的方式来分类,内存泄漏可以分为4类:

① 常发性内存泄漏。发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。

② 偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境,偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。

③ 一次性内存泄漏。发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块仅且一块内存发生泄漏。比如,在类的构造函数中分配内存,在析构函数中却没有释放该内存,所以内存泄漏只会发生一次。

④ 隐式内存泄漏。程序在运行过程中不停的分配内存,但是直到结束的时候才释放内存。严格的说这里并没有发生内存泄漏,因为最终程序释放了所有申请的内存。但是对于一个服务器程序,需要运行几天,几周甚至几个月,不及时释放内存也可能导致最终耗尽系统的所有内存。所以,我们称这类内存泄漏为隐式内存泄漏。

从用户使用程序的角度来看,内存泄漏本身不会产生什么危害,作为一般的用户,根本感觉不到内存泄漏的存在。真正有危害的是内存泄漏的堆积,这会最终消耗尽系统所有的内存。从这个角度来说,一次性内存泄漏并没有什么危害,因为它不会堆积,而隐式内存泄漏危害性则非常大,因为较之于常发性和偶发性内存泄漏它更难被检测到。

5. String,StringBuffer 和 StringBuilder的区别

①可变与不可变

String类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道string对象是不可变的。

private final char value[];

StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,如下就是,可知这两种对象都是可变的。

char[] value;

②是否多线程安全

String中的对象是不可变的,也就可以理解为常量,显然线程安全。

AbstractStringBuilder是StringBuilder与StringBuffer的公共父类,定义了一些字符串的基本操作,如expandCapacity、append、、indexOf等公共方法。

StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。看如下源码:

public synchronized StringBuffer reverse() { super.reverse(); return this; } public int indexOf(String str) { return indexOf(str, 0); //存在 public synchronized int indexOf(String str, int fromIndex) 方法 }

StringBuilder并没有对方法进行加同步锁,所以是非线程安全的。

③StringBuilder与StringBuffer共同点

StringBuilder与StringBuffer有公共父类AbstractStringBuilder(抽象类)。

抽象类与接口的其中一个区别是:抽象类中可以定义一些子类的公共方法,子类只需要增加新的功能,不需要重复写已经存在的方法;而接口中只是对方法的申明和常量的定义。

StringBuilder、StringBuffer的方法都会调用AbstractStringBuilder中的公共方法,如super.append(...)。只是StringBuffer会在方法上加synchronized关键字,进行同步。

最后,如果程序不是多线程的,那么使用StringBuilder效率高于StringBuffer。

6. 数组和链表的区别

二者都属于一种数据结构

从逻辑结构来看:

① 数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费;数组可以根据下标直接存取。

② 链表动态地进行存储分配,可以适应数据动态地增减的情况,且可以方便地插入、删除数据项。(数组中插入、删除数据项时,需要移动其它数据项,非常繁琐)链表必须根据next指针找到下一个元素。

从内存存储来看:

①(静态)数组从栈中分配空间,对于程序员方便快速,但是自由度小。

②链表从堆中分配空间,自由度大但是申请管理比较麻烦。

从上面的比较可以看出,如果需要快速访问数据,很少或不插入和删除元素,就应该用数组;相反,如果需要经常插入和删除元素就需要用链表数据结构了。

7. ArrayList和LinkedList的区别

①ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。

②对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。

③对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

篇9:java程序员笔试题

Java程序员笔试题

一、单项选择题(共10题,每题2分,共20分)

1.下列说法哪一个是正确的。(B)

A.Java程序经编译后会产生machine code

B.Java程序经编译后会产生byte code

C.Java程序经编译后会产生DLL

D.以上都不正确

2.提供Java存取数据库能力的包是。(A)

A.java.sqlB.java.awtC.java.langD.java.swing

3.执行如下程序代码后,C的值是。(C)

a=0;c=0;

do{

--c;

a=a-1;

}while(a>0);

A.0B.1C.-1D.死循环

4.下面的语句中正确的表达式为。(C)

A.byte b = 128;

B.boolean n = null;

C.double d = 0.9239d;

D.float f = 0.9239;

5.将一个十六进制值赋给一个long型变量的正确写法为。(D

A.long number = 345L;

B.long number = 0345;

C.long number = 0345L;

D.long number = 0x345L;

6.以下程序代码的输出是。(B)

public class test(public static void main(String args[])(System.out.printIn(6 ^ 3);))

A.3B.5C.6D.11

7.以下程序代码的输出是。(E)

public class test(private static int j = 0;

private static boolean methodB(int k)(j += k;)

return true;)

public static void methodA(int i){

boolean b:

b = i < 10 | methodB(4);

b = i < 10 || methodB(8);)

public static void main(String args[] }(methodA(0);

system.out.printIn(j);))

A.0B.4C.8D.12E.不能编译通过

8.以下程序代码的输出是。(A)

public class test {

public static void add3(Integer i)}

int val = i.intValue();

val += 3;

i = new Integer(val);

}

public static void main(String args [ ]){

Integer i = new Integer(0);

add3(i);

system.out.printIn(i.intValue());

})

A.编译失败B.编译成功但在第三行会出现异常

9.以下程序代码执行后,哪个说法正确?(B)

int index = 1;

boolean[] test = new Boolean[3];

boolean foo= test [index];

A.有异常抛出。

B.无法编译。

C.foo的值是0。

D.foo的值是null。

E.foo的值是true。

F.foo的值是false。

10.以下哪个类是swt包中的。(D)

A.MessageBoxB.MessageDialogC.JDialog

C.0D.3 D.DisplayMode

二、多项选择题(共5题,每题4分,共20分)

1.在下面的选项中合法的标识符有。(ADEF)

A._ok

B.*point

C.this

D.$byte

E.const

F.ILikeJLCSS

2.下面的选项中哪些不是java的关键字。(AB D)

A.TRUE

B.sizeof

C.goto

D.const

E.super

F.void

3.下面的叙述中正确的有。(AC)

A. 环境变量可在编译source code时指定。

B. 在编译程序时,所能指定的环境变量不包括class path。

C. javac一次可同时编译数个Java源文件。

D. javac.exe能指定编译结果要置于哪个目录(directory)。

4.下面的叙述中正确的有。(C)

A.equals()方法判定引用值是否指向同一对象。

B.= = 操作符判定两个分立的对象的内容和类型是否一致。

C.equals()方法只有在两个对象的内容一致时返回true。

D.类File重写方法equals()在两个分立的对象的内容和类型一致时返回true。

5.下面有关变量及其作用域的陈述哪些是对的。(A C)

A.在方法里面定义的局部变量在方法退出的时候被撤销。

B.局部变量也叫自动变量。

C.在方法外面定义的变量(译注:即实例变量)在对象被构造时创建。

D.在方法中定义的方法的参变量只要该对象被需要就一直存在。

三、简答题(共7题,共40分)

1.请写出一个输出“Hello World!” 的程序。(3分)

答:public Class Hello World

{

Public static void main(String[]args)

{System.out.println(“HELLO WOTLD”);

}

}

2.char型变量中能不能存贮一个中文汉字? 为什么?(3分)

答:能存储一个汉字;因为它能存储四个字节而每个汉字只占两个字节。

3.常见的两种xml解析技术是什么? 区别是什么?(4分)

答:常见的两种有:SAX和DOM。

区别:SAX 是一种事件驱动的xml解析方式。每次访问一个xml文件中的某个节点的时候,sax就会搜索一遍xml文件,在找到相应的节点后就会触发一个事件来处理请求。只读

DOM是一种基于树状的查找方式。DOM会将xml解析成一棵树,存在内存中。开发者可以通过查找树的节点来取得文件的内容或者修改内容。可读写

4.MVC是什么,如何实现?(5分)

答:MVC是一个是一个设计模式,它强制性的使应用程序的输入,处理和输出分开。

使用MVC应用程序被分为三个核心部件:M----------MODO模型,V----------VIEW试图,C---------Contral控制

实现:首先有页面(jsp)发送请求给控制器(servlet),然后由控制器接收用户的请求,并决定应该调用哪个模型(javabean)来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层显示给用户。

5..J2EE是什么?(6分)

答:J2EE 是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。

6.jsp有哪些内置对象?作用分别是什么?(9分)

答:1.request 用户端请求,此请求会包含来自GET/POST请求的参数;2.response 网页传回用户端的回应;3.pageContext 网页的属性是在这里管理;4.session 与请求有关的会话期;5.application servlet 正在执行的内容;6.out 用来传送回应的输出;7.config servlet的构架部件;8.page JSP网页本身;9.exception 针对错误网页,未捕捉的例外

7.作用域public,private,protected,以及不写时的区别 ?(10分)

答:作用域当前类同一package子孙类其他package

public√√√√

protected√√√×

friendly√√××

private√×××

不写时默认为friendly

四、编码及论述题(共2题,每题10分,共20分)

1.什么是Singleton,它的作用是什么,它有几种形式?请用代码写出一个Singleton类。

答:Java Singleton 模式用来保证在运行的应用程序中,一个Class只是实例化一次,也就是只有一个相应的对象存在。

它有三种形式

public class Singleton

{

private static Singleton instance = null;

public static synchronized Singleton getInstance()

{

if(instance==null)

instance=new Singleton();

return instance;

}

}

篇10:Java程序员笔试题

说明:该份题目要求在1小时内答完

1、工厂方法模式和抽象工厂模式的区别

2、jsp/servlet 中 forward, include, reDirect 之间的区别

3、JSP中的两种include包含指令的区别与用法

4、ArrayList和Vector的区别,HashMap和Hashtable及HashSet的区别?

5、请说明在实际应用中,java.sql 包中的Statement和PreparedStatement有何区别?

6、如何遍历一个集合(collection),并在屏幕上打印出集合中的每个元素public void printStr

(Collection cols){

}

7、写一个方法,实现字符串的反转,例如:输入abc,输出cba

PublicString reverseStr(String str){

//代码

}

8、输入为整数数组,请写出如下的排序算法,使得数组data里面存储的数字随数组脚标的增大而依

次增大,即越小的数字存储的位置越靠前

Public void sort(int[]data){

}

9、用户在JSP: input.jsp中输入姓名和手机号码,点”Done”按钮来提交请求到一个/ 6

servlet:test.java。test.java将输入的姓名和手机号码存储在文件store.txt里。

请写出input.jsp, test.java的程序源码,并在input.jsp和test.java中分别通过js和java代码对输入进行校验,如果1)姓名项没有填写或者输入的长度超过了20个字符2)手机号码项没有填写,或者输入了非数字的字符或者输入的长度不是13位,则返回input.jsp,并给出相应的错误提示。

10、有若干条有关城市的信息,每条包括如下属性:ID(唯一递增的序列),CITY(城市名称),DESC(城市说明),要求设计一套数据结构及算法使得1)所有登陆系统的用户均能使用这些城市信息2)能够根据城市ID 号或名称获得城市的其他信息3)如果从该数据结构中找不到合适的城市信息,可以往该数据结构中添加新的城市信息,但相同的城市(ID号或名称有任意一个相同均认为是同一城市)在数据结构中只能有一条记录 4)如任一条城市信息,超过两个小时没有被使用(查询)则需自动将其删除

pubic class CityCache{

}

11、读下面一段程序,写出运行结果

----

pubicclassBaseClass{

static{

System.out.println(“aaaaa”);/ 6

}

BaseClass(){

System.out.println(“11111”);

}

}

publicclassDerivedClass

extendsBaseClass{

static{

System.out.println(“bbbbb”);

}

DerivedClass(){

System.out.println(“22222”);

}

}

publicclassStartRun {

public static void main(String[ ] args){

DerivedClasssdc 1 = newDerivedClass();

dc1 = newDerivedClass();

}

}

12、请写出符合要求的sql 语句(假定数据库为Oracle)。/ 6

现有数据表a,建表语句如下:

create table a(bm char(4),——编码

mc varchar2(20)——名称)

表中数据如下

bmmc

11111111

11121111

11131111

11141111

要求1:用一条sql语句实现对表a中数据的复制,即达到如下的结果(2)bmmc

11111111

11121111

11131111

11141111

11111111

11121111

11131111

11141111/ 6

要求2:请删除表中重复的记录(bm和mc都相同的记录为重复记录)

13、classStack {

LinkedListlist = new LinkedList()

public synchronized void push(Objectx){

synchronized(list){

list.addLast(x);

notify();

}

}

public synchronized Object pop(){

synchronized(list){

if(list.size()<=0)

wait();

return list.removeLast();

}

}/ 6

}

请问上面这个类中有什么错误?应该怎么解决?14、15、请写出MSSQL、ServerMysql和ORACE实现分页算法的sql语句。UNIX和网络基础,依次写出完成下列的操作命令,最好有常用参数的简单说明

1)如何显示当前的IP配置信息

2)查看当前目录

3)拷贝文件或目录

4)移动文件或目录

5)删除文件或目录

6)切换用户

7)修改文件或目录的权限

8)查看日志文件的最后1行

9)查看系统内存、CPU的使用状况

篇11:Java开发工程师笔试题

一、单项选择题(每题2分,共计30分)

1.下列哪一种叙述是正确的(A).abstract修饰符可修饰字段、方法和类

(B).抽象方法的body部分必须用一对大括号{}包住

(C).声明抽象方法,大括号可有可无

(D).声明抽象方法不可写出大括号

2.如下代码

public class Test {

public int aMethod(){

static int i = 0;

i++;

return i;

}

public static void main(String args[]){

Test test = new Test();

test.aMethod();

int j = test.aMethod();

System.out.println(j);

}

}

输出结果是什么?

(A).0

(B).1

(C).2

(D).编译失败

3.以下代码的输出结果是()?

public class Test1{

public static void main(String[] args){int i = 42;

String s =(i < 40)? “life” :(i > 50)? “universe” : “everything”;System.out.println(s);

}

}

(A).life

(B).universe

(C).everything

(D).以上答案都不对。

4.当你编译和运行下面的代码时,会出现下面选项中的哪种情况?

public class Test{

static boolean paddy;

public static void main(String[] args){

System.out.println(paddy);

}

}

(A).编译时出错

(B).编译通过并输出结果false

(C).编译通过并输出结果true

(D).编译通过并输出结果null

5.如下代码:

class Base {

public Base(){

System.out.print(“Base”);

}

}

public class Alpha extends Base {

public static void main(String[] args){

new Alpha();

new Base();

}

}

结果是什么?

(A).Base

(B).BaseBase

(C).编译失败.(D).代码运行但没有输出.(E).运行时抛出异常

6.如下代码:

public class Foo {

public static void main(String[] args){

try {

return;

} finally {

System.out.println(“Finally”);

}

}

}

输出结果是什么?

(A).Finally

(B).编译失败

(C).代码正常运行但没有任何输出.(D).运行时抛出异常

7.下列关于构造方法的叙述中,错误的是()

(A).Java语言规定构造方法名与类名必须相同

(B).Java语言规定构造方法没有返回值,但不用vold声明

(C).Java语言规定构造方法不可以重载

(D).Java语言规定构造方法只能通过new自动调用

8.构造函数何时被调用()

(A).类定义时

(B).创建对象时

(C).调用对象方法时

(D).使用对象的变量时

9.JDBC中,用于表示数据库连接的对象是:

(A).Statement

(B).Connection

(C).DriverManager

(D).PreparedStatement

10.需要读一个比较大的文本文件,这个文件里有很多字节数据,那么下列最合适读这

类文件的选项是哪一个?

(A).new FileInputStream(“myfile.txt”);

(B).new InputStreamReader(new FileInputStream(“myfile.txt”));

(C).new BufferedReader(new InputStreamReader(new FileInputStream(“myfile.txt”)));

(D).RandomAccessFile raf = new RandomAccessFile(“myfile.txt”, “+rw”);

11.在List,Map,Set等接口中,不能包含重复元素的接口是哪一个?

(A).List

(B).Map

(C).Set

(D).都不是

12.有如下程序:

1.classTest4{

2.public static void main(String []args){

3.boolean x=;

4.boolean y=false;

5.short z=42;

6.7.if((z++==42)&&(y=true))z++;8.if((x=false)||(++z==45))z++;9. 10.System.out.println(“z=”+z);11.} 12.} 结果为:

(A).44

(B).45

(C).46

(D).编译出错

13.有如下程序

11.public class Test {

12.public static void main(String [] args){

13.int x =5;

14.boolean b1 = true;

15.boolean b2 = false;

16.17.if((x==4)&&!b2)

18.System.out.print(“l ”);

19.System.out.print(“2 ”);

20.if((b2 = true)&& b1)

21.System.out.print(“3”);

22.}

23.}

运行的结果为:

(A).2

(B).3

(C).1 2

(D).2 3

(E).1 2 3

(F).编译错误

(G).抛出一个运行时异常

14.以下语句有语法错的是:

(A).int x=1;y=2;z=3

(B).for(int x=10,y=0;x>0;x++);

(C).while(x>5);

(D).for(;;);

15.下面有关类 Demo 的描述正确的有()

public class Demo extends Base{

private int count;

public Demo(){

System.out.println(“A Demo object has been created”);

}

protected void assone(){

count++;

}

}

(A).当创建一个 Demo 类的实例对象时,count 的值为 0

(B).当创建一个 Demo 类的实例对象时,count 的值是不确定的(C).Base 类型的对象中可以包含改变 count 值的方法

(D).Demo 的子类对象可以访问 count

二、1.2.3.4.5.问答题(每题5分,共计25分)String是最基本的数据类型吗? String 和StringBuffer的区别? Java中的“==”和equals()方法有什么区别? 描述一下JSP中转发和重定向的区别? 请说出作用域public,private,protected,以及不写时的区别? List, Set, Map是否继承自Collection接口?分别说出它们的特点?

三、编程题(每题15分,共计45分)

1.已知有一个数列:f(0)= 1,f(1)= 4,f(n+2)=2*f(n+1)+ f(n),其中n是大于0的整数,求f(10)的值。

2.写一个算法对1,8,5,2,4,9,7进行顺序排列。

上一篇:地铁施工经验交流下一篇:语文:新人教版选修教案《中国小说欣赏》1.1《三国演义》