2015年网易校招Java开发工程师(技术架构)在线笔试题

1、  程序和进程的本质区别是?

A、在外存和内存存储

B、非顺序和顺序执行机器指令

C、独占使用和分时使用计算机资源

D、静态和动态特征

参考答案分析:

进程与应用程序的区别:

进程(Process)是最初定义在Unix等多用户、多任务操作系统环境下用于表示应用程序在内存环境中基本执行单元的概念。以Unix操作系统为例,进程是Unix操作系统环境中的基本成分、是系统资源分配的基本单位。Unix操作系统中完成的几乎所有用户管理和资源分配等工作都是通过操作系统对应用程序进程的控制来实现的。      

C、C++、Java等语言编写的源程序经相应的编译器编译成可执行文件后,提交给计算机处理器运行。这时,处在可执行状态中的应用程序称为进程。从用户角度来看,进程是应用程序的一个执行过程。从操作系统核心角度来看,进程代表的是操作系统分配的内存、CPU时间片等资源的基本单位,是为正在运行的程序提供的运行环境。进程与应用程序的区别在于应用程序作为一个静态文件存储在计算机系统的硬盘等存储空间中,而进程则是处于动态条件下由操作系统维护的系统资源管理实体

多任务环境下应用程序进程的主要特点包括:      

●进程在执行过程中有内存单元的初始入口点,并且进程存活过程中始终拥有独立的内存地址空间;      

●进程的生存期状态包括创建、就绪、运行、阻塞和死亡等类型;      

●从应用程序进程在执行过程中向CPU发出的运行指令形式不同,可以将进程的状态分为用户态和核心态。处于用户态下的进程执行的是应用程序指令、处于核心态下的应用程序进程执行的是操作系统指令。      

在Unix操作系统启动过程中,系统自动创建swapper、init等系统进程,用于管理内存资源以及对用户进程进行调度等。在Unix环境下无论是由操作系统创建的进程还要由应用程序执行创建的进程,均拥有唯一的进程标识(PID)

参考网址:http://blog.csdn.net/you_off3/article/details/7460914

2、  假设某算法的时间复杂度符合递推关系式T(n)=2T(n/2)+n,那么该算法的时间复杂度相当于

A、O(n)

B、O(lgn)

C、O(nlgn)

D、O(n2)

参考答案分析:

解析:由时间代价严格推出时间复杂度比较复杂,对于这种题,可用特例验证,不过需要注意的是特例不能取太少,至少n取到5,这样规律基本就可以确定了。 
  T(1)=1 
  T(2)=2T(1)+2=4 
  T(3)=2T(1)+3=5 
  T(4)=2T(2)+4=12 
  T(5)=2T(2)+5=13
  很容易排除D选项,其递增速率介于O(n)和O(n2)之间,实际上可以参考归并排序的递推公式。

参考网址:http://www.shangxueba.com/ask/1581189.html

3、  下图一个非确定有限自动机(NFA)的状态转换,其等价的正规式为()

A、0*|(0|1)0
B、(0|10)*
C、0*((0|1)0)*
D、0*(10)*

参考答案分析:

根据分析题目中给出的状态转换图可知,该NFA可识别空串以及任意数目0组成的串,但若出现1,则其后至少要有1个0才能到达终态,因此,该自动机识别的串等价于正规式(0|10)*。

参考网址:http://www.shangxueba.com/ask/1379242.html

扩展阅读:

有限自动机(FiniteAutomata)

有限自动机(DeterministicFA)

非确定有限自动机(NondeterministicFA)

词法分析器的工作过程(参考阅读):

参考网址:

http://wenku.baidu.com/link?url=723LWUUKvHqLl2T6nf_EocLZKDBgk0lJ8iXxsmF2LBHSId8HAETAjNBwXslnE5EeG8afFZoHHt-om9ULUAYVxQMH5cWrrSlGaPxfU7OxKYC

详细文献阅读:http://www.360doc.com/content/10/0927/19/832113_56859620.shtml

4、  IPv6地址占____个字节

A、4

B、6

C、8

D、16

参考答案分析:

IPv4采用32位地址长度,约有43亿地址,IPv6地址为128位长,但通常写作8组,每组为四个十六进制数的形式。例如:FE80:0000:0000:0000:AAAA:0000:00C2:0002 是一个合法的IPv6地址。

IPv4映像地址布局如下:

| 80bits |16 | 32bits |

0000....................0000 | FFFF | IPv4 address |

IPv4兼容地址写法如下:::192.168.89.9

如同IPv4映像地址,这个地址仍然是一个IPv6地址,只是0000:0000:0000:0000:0000:0000:c0a8:5909的另外一种写法罢了

参考网址:http://zh.wikipedia.org/wiki/IPv6

5、  以下关于RARP协议的说法中,正确的是()?

A、RARP协议根据主机IP地址查询对应的MAC地址

B、RARP协议用于对IP协议进行差错控制

C、RARP协议根据MAC地址求主机对应的IP地址

D、RARP协议根据交换的路由信息动态改变路由表

参考答案分析:

逆地址解析协议(Reverse Address Resolution Protocol,RARP),是一种网络协议互联网工程任务组(IETF)在RFC903中描述了RARP[1]。RARP使用与ARP相同的报头结构,作用与ARP相反。RARP用于将MAC地址转换为IP地址。其因为较限于IP地址的运用以及其他的一些缺点,因此渐为更新的BOOTPDHCP所取代。

RARP的工作原理:

1.     发送主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP服务器分配一个IP地址;

2.     本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址;

3.     如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用;

4.     如果不存在,RARP服务器对此不做任何的响应;

5.     源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败

参考文献:

http://zh.wikipedia.org/wiki/%E9%80%86%E5%9C%B0%E5%9D%80%E8%A7%A3%E6%9E%90%E5%8D%8F%E8%AE%AE

6、  一栋大楼共及200层,某种类型的鸡蛋从某一楼层及其以上楼层下来时会被打破,从该楼层(即临界楼层)以下楼层摔下该鸡蛋,鸡蛋不会出现破损。现在给你2个完全一样的该种类型的鸡蛋,问:如何通过这2个鸡蛋找到该临界楼层?

参考答案分析:(智能题_假设只有100层_楼层的层数随意_思想关键_用算法解决分析实际问题)

假设我们从第2个楼层开始试探,往楼层号码渐次增长的方向,每隔数个楼层,试探一次,并在试探到第1个鸡蛋摔破的地方停下来,用第2个鸡蛋来从最近一次试探没有摔破的楼层之上的那个楼层开始逐个楼层进行试探,知道鸡蛋被摔破,我们就得到了临界楼层,如果鸡蛋一直没有被摔破,那么第一个鸡蛋摔破的楼层就是临界楼层。现在假设第2个楼层和下一次试探的楼层之间有x个楼层,即第2次试探的楼层号是A(2)=x+3,以后试探的楼层间隔分别减少1,那么我们第3次试探的楼层号为A(3)=2x+3,第4次为A(4)=3x+2,第5次为A(5)=4x,第n次为A(n)=(n-1)*x-(1/2)*n*n+(5/2)*n,这里需要注意,我们试探的n不能超过x+1,可以这么想来:跳跃测试的n不应超过第一次最大的跨度(也即第一种需要连续测试的区间大小),及n<=x+1。那么把x替换为n-1,得到A(n)=(1/2)*n*(n+1)+1。楼层为100,那么A(n)=(1/2)*n*(n+1)+1>=100,得到n(n+1)>=198,得n=14,x=13,那么A(n)=(31*n-n*n-26)/2. 即通过楼层2,16,29,41,52,62,71,79,86,92,97,101,(104,106).作为间隔就可以在使用2个鸡蛋,不超过14次测试的情况下找到临界楼层。

参考文献:http://blog.csdn.net/qianlizhima1/article/details/8615657

7、  请描述JAVA异常类的继承体系结构,以及JAVA异常的分类,并为每种类型的异常各举三个例子?

粉红色的是受检查的异常(checked exceptions),其必须被try{}catch语句块所捕获,或者在方法签名里通过throws子句声明.受检查的异常必须在编译时被捕捉处理,命名为 CHeckedException 是因为Java编译器要进行检查,Java虚拟机也要进行检查,以确保这个规则得到遵守。
    绿色的异常是运行时异常(runtime exceptions),需要程序员自己分析代码决定是否捕获和处理,比如 空指针,被0除...
    而声明为Error的,则属于严重错误,需要根据业务信息进行特殊处理,Error不需要捕捉。

比如:AWTError、ThreadDeath、

参考网址:

http://blog.csdn.net/renfufei/article/details/16344847

http://blog.csdn.net/junlixxu/article/details/6096266

 

8、  描述Java类加载器的原理及其组织结构?

jvm classLoader architecture :

a、Bootstrap ClassLoader/启动类加载器
主要负责jdk_home/lib目录下的核心 api 或 -Xbootclasspath 选项指定的jar包装入工作.

B、Extension ClassLoader/扩展类加载器
主要负责jdk_home/lib/ext目录下的jar包或 -Djava.ext.dirs 指定目录下的jar包装入工作

C、System ClassLoader/系统类加载器
主要负责java -classpath/-Djava.class.path所指的目录下的类与jar包装入工作.

B、 User Custom ClassLoader/用户自定义类加载器(java.lang.ClassLoader的子类)
在程序运行期间, 通过java.lang.ClassLoader的子类动态加载class文件, 体现java动态实时类装入特性.

参考文献:http://www.blogjava.net/zhuxing/archive/2008/08/08/220841.html

http://blog.csdn.net/zdwzzu2006/article/details/2253982

9、  在Web开发中,如何实现会话的跟踪?

参考答案分析:(分为三种:SSH会话、Cookies、URL重定向)

A、SSL会话(Secure Socket Layer)

安全套接字层,是一种运行在TCP/IP之上和像HTTP这种应用层协议之下的加密技术。SSL是在HTTPS协议中使用的加密技术。SSL可以让采用SSL的服务器认证采用SSL的客户端,并且在客户端和服务器之间保持一种加密了连接,在建立了加密连接的过程中,客户端和服务器都可以产生一种名为“会话密钥”的东西,它是一种用于加密和解密的对称密钥。基于HTTPS协议的服务器可以使用这个客户端的对称密钥来建立会话

B、Cookies

中文译为小甜饼,由Netscape公司发明,是最常用的跟踪用户会话的方式。Cookies是一种由服务器发送给客户端的片段信息,存储在客户端的内存或者硬盘上,在客户随后对该服务器的请求中发回它。其实主要就是把服务器为客户端分配的session ID保存在Cookies中,每次发送请求时把Cookies附加到请求对象中一起发过去,服务器得到这个唯一的session ID,从而可以唯一的标识一个客户端

3、URL重写

如果客户端禁用了Cookies,那么就只能用URL重写机制了。就是在URL中附加标识客户端的sessionID,web容器解析URL,取出session ID,根据这个session ID将请求与特定的session关联起来。

注意如果采用了URL重写,那么代码里面的所有url都要经过编码,response.sendRedirect(url)中的url用response.encodeRedirectURL(url)编码,其他的用response.encodeURL(url)来编码

参考网址:http://zhaomin819111.blog.163.com/blog/static/10659004200972525222991/

10、             请简述Spring架构中IOC的实现原理?

参考文献阅读:(怎样自己写一个Spring)

http://jiwenke.iteye.com/blog/493965

http://blog.csdn.net/it_man/article/details/4402245(blog写的很不错)

11、             检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。

[java] view plaincopy

  1. package algorithms.com.guan.javajicu;
  2. public class TestDemo {
  3. public static String output ="";
  4. public static void foo(inti){
  5. try{
  6. if(i == 1){
  7. throw new Exception();
  8. }
  9. }catch(Exception e){
  10. output += "2";
  11. return ;
  12. }finally{
  13. output += "3";
  14. }
  15. output += "4";
  16. }
  17. public static void main(String[] args) {
  18. foo(0);
  19. foo(1);
  20. System.out.println(output); //3423
  21. }
  22. }

考点分析:finally的执行时间

12、             检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。

[java] view plaincopy

  1. package algorithms.com.guan.javajicu;
  2. public class HelloB extends HelloA{
  3. public HelloB(){
  4. System.out.println("HelloB");
  5. }
  6. {
  7. System.out.println("I‘m B class");
  8. }
  9. static{
  10. System.out.println("static B");
  11. }
  12. public static void main(String[] args) {
  13. new HelloB();
  14. /**输出结果参考答案:
  15. * static A
  16. staticB
  17. I‘mA class
  18. HelloA
  19. I‘mB class
  20. HelloB
  21. */
  22. }
  23. }
  24. class HelloA{
  25. public HelloA(){
  26. System.out.println("HelloA");
  27. }
  28. {
  29. System.out.println("I‘m A class");  //这句话是什么时候加载?
  30. }
  31. static{
  32. System.out.println("static A");
  33. }
  34. }

考点分析:

  1. {
  2. System.out.println("I‘m B class");
  3. }

这叫初始化块,当创建一个对象的时候,它会先被执行(之后才是构造方法)

  1. static{
  2. System.out.println("static B");
  3. }

  这个叫做静态代码块,当类被装载的时候就会执行该块代码

这两种都不叫方法。顺序是当类被加载就会执行静态代码块
如果该类被创建对象,就会先执行初始化块
之后才是构造方法

13、             检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。

[java] view plaincopy

  1. package algorithms.com.guan.javajicu;
  2. public class Inc {
  3. public static void main(String[] args) {
  4. Incinc = new Inc();
  5. int i = 0;
  6. inc.fermin(i);
  7. i= i ++;
  8. System.out.println(i);  //输出结果为0
  9. }
  10. void fermin(int i){
  11. i++;
  12. }
  13. }

考点分析:

14、             检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。

[java] view plaincopy

  1. package algorithms.com.guan.javajicu;
  2. public class Example {
  3. Stringstr = new String("good");
  4. char[] ch = {‘a‘,‘b‘,‘c‘};
  5. public static void main(String[] args) {
  6. Exampleex = new Example();
  7. ex.change(ex.str, ex.ch);
  8. System.out.print(ex.str +"and");
  9. System.out.print(ex.ch);
  10. //参考答案输出结果:goodandgbc
  11. }
  12. public void change(Stringstr, char ch[]){
  13. str= "test ok";
  14. ch[0]= ‘g‘;
  15. }
  16. }

考点分析:

15、             检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。

[java] view plaincopy

  1. packagealgorithms.com.guan.javajicu;
  2. import java.util.Date;
  3. public class SuperTest extends Date{
  4. private static final long serialVersionUID = 1L;
  5. private void test(){
  6. System.out.println(super.getClass().getName());
  7. //参考答案输出:algorithms.com.guan.javajicu.SuperTest
  8. }
  9. public static void main(String[]args){
  10. newSuperTest().test();
  11. }
  12. }

考点分析:

16、             任意2n个整数,从其中选出n个整数,使得选出的n个整数和同剩下的n个整数之和的差最小。

注解:这三个程序有空再贴上代码

17、             有两个有序的集合,集合的每个元素都是一段范围,求其交集,例如集合{[4,8],[9,13]}和{[6,12]}的交集为{[6,8],[9,12]}

可供参考的文献:

http://blog.csdn.net/jie1991liu/article/details/13168255

http://loveexception.iteye.com/blog/628744

http://bestchenwu.iteye.com/blog/1674624

18、             一个文件中有10000个数,用Java实现一个多线程程序将这个10000个数输出到5个不用文件中(不要求输出到每个文件中的数量相同)。要求启动10个线程,两两一组,分为5组。每组两个线程分别将文件中的奇数和偶数输出到该组对应的一个文件中,需要偶数线程每打印10个偶数以后,就将奇数线程打印10个奇数,如此交替进行。同时需要记录输出进度,每完成1000个数就在控制台中打印当前完成数量,并在所有线程结束后,在控制台打印”Done”.

可供参考的文献:

http://blog.csdn.net/vstar283551454/article/details/17362709

时间: 2024-10-12 04:21:16

2015年网易校招Java开发工程师(技术架构)在线笔试题的相关文章

2015网易校招Java开发工程师(技术架构)在线笔试题

1.  程序和进程的本质区别是? A.在外存和内存存储 B.非顺序和顺序执行机器指令 C.独占使用和分时使用计算机资源 D.静态和动态特征 参考答案分析: 进程与应用程序的区别: 进程(Process)是最初定义在Unix等多用户.多任务操作系统环境下用于表示应用程序在内存环境中基本执行单元的概念.以Unix操作系统 为例,进程是Unix操作系统环境中的基本成分.是系统资源分配的基本单位.Unix操作系统中完成的几乎所有用户管理和资源分配等工作都是通过操作系统 对应用程序进程的控制来实现的. 

微软2014年技术岗位在线笔试题

DescriptionFor this question, your program is required to process an input string containing only ASCII characters between ‘0’ and ‘9’, or between ‘a’ and ‘z’ (including ‘0’, ‘9’, ‘a’, ‘z’). Your program should reorder and split all input string char

【高级JAVA开发工程师】·通缉令18-28K

Dear 攻城狮们, 感谢嫩们在百忙之中来看本姑凉滴博文,在此谢过! wuli平台名叫邦帮堂,是一家互联网金融公司,官网https://www.rmbbox.com / ,2014年9月上线至今,wuli平台是中国互联网金融协会创始理事单位的哟! 团队整体由80.90年轻一族组成,技术团队目前不到30人,团队氛围低调沉稳,大牛林立,领导nice,偶尔约球儿,一起健身,是片搞技术的好丛林! 所需[高级JAVA开发工程师],要求至少5年JAVA开发经验,须有完整的支付.交易系统开发经验,薪资18-2

Java开发工程师上机笔试题

网上看到3道比较好的Java开发工程师上机笔试题,没有答案这里把答案写出来,给大家参考. 1.编一个程序,输入10个整数,并放在数组中,先降序输出所有的数,再统计并输出其中正数.负数和零的个数 package cn.Pigzhu.test; import java.util.Scanner; /**  * 控制台输入10个数字,并输入正负和零的个数  * @author xiaoyezhu  *  */ public class test { public static void main(St

2015年阿里巴巴校招研发工程师在线笔试题汇总

在线笔试题汇总 卷一: 1.下面的函数中哪个是系统调用而不是库函数______? printf scanf fgetc read print_s scan_s 2.某足球队有四名外援,分别来自巴西.荷兰.意大利和美国.他们分别擅长前锋.后卫或守门,其中: ① 美国外援单独擅长守门: ② 意大利外援不擅长前锋: ③ 巴西外援和另外某个外援擅长相同的位置: ④ 荷兰外援擅长的位置和巴西外援不同. 以上条件可以推出巴西外援擅长的位置是______. 前锋 守门 后卫 前锋或守门 后卫或守门 前锋或后卫

Java中有关构造函数的一道笔试题解析

Java中有关构造函数的一道笔试题解析 1.具体题目如下 下列说法正确的有() A. class中的constructor不可省略 B. constructor必须与class同名,但方法不能与class同名 C. constructor在一个对象被new时执行 D.一个class只能定义一个constructor 2.解析说明 (1)class中的构造函数是可以省略的 /** * @Title:User.java * @Package:com.you.user.model * @Descrip

2015微软实习在线笔试题 - Professor Q&#39;s Software

时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Professor Q develops a new software. The software consists of N modules which are numbered from 1 to N. The i-th module will be started up by signal Si. If signal Si is generated multiple times, the i-th module

2015阿里巴巴前端实习生在线笔试题

Summary 大公司开始招实习生了,我也变成过来人了,品味到之前的酸甜苦辣,除了加油好像也没法说那么多. 因为是你在奋斗,心态这件事是你们在掌握的.但是我们唯一能提供的是我们topview实验室新鲜出炉的面经和笔试. (其实我在想有没应届生春招 - -!) Where 2015阿里巴巴前端实习生在线笔试题

2015.8.29某高级企业的在线笔试题

收集了今年阿里的在线笔试题,贴出来供需要的朋友参考. 1.下面的函数中哪个是系统调用而不是库函数______?printfscanffgetcreadprint_sscan_s 2.某足球队有四名外援,分别来自巴西.荷兰.意大利和美国.他们分别擅长前锋.后卫或守门,其中:① 美国外援单独擅长守门:② 意大利外援不擅长前锋:③ 巴西外援和另外某个外援擅长相同的位置:④ 荷兰外援擅长的位置和巴西外援不同.以上条件可以推出巴西外援擅长的位置是______.前锋守门后卫前锋或守门后卫或守门前锋或后卫 3