您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > Java企业面试题整理2011
Java企业面试题整理第1页/共48页Java企业面试题整理1.1+2+3……+100构建一个函数。(易)答案:publicintSum(intn){if(n==1)return1;elsereturnn+Sum(n-1);}2.描述冒泡算法。(易)答案:基本思路:对尚未排序的各元素从头到尾依次比较相邻的两个元素是否逆序(与欲排顺序相反),若逆序就交换这两元素,经过第一轮比较排序后便可把最大(或最小)的元素排好,然后再用同样的方法把剩下的元素逐个进行比较,就得到了你所要的顺序。可以看出如果有n个元素,那么一共要进行n-1轮比较,第i轮要进行j=n-i次比较。(如:有5个元素,则要进行5-1轮比较。第3轮则要进行5-3次比较)3.堆和栈的区别!(难)答案:申请方式栈:由系统自动分配。例如,在函数中一个局部变量intb;系统自动在栈中为b开辟空间堆:需要程序员自己申请,并指明大小,在c中malloc函数申请后系统的响应栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。堆:首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,申请大小的限制栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。堆:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。申请效率的比较:栈由系统自动分配,速度较快。但程序员是无法控制的。堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便.堆和栈中的存储内容栈:在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可Java企业面试题整理第2页/共48页执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。小结:堆和栈的区别可以用如下的比喻来看出:使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。IT公司面试手册提供最全的软件测试类面试题Java面试题:面试题:面试题:面试题:面试题:开发面试题更多面试题请访问:索引是怎样来提高搜索速度的!(难)答案:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构,例如employee表的姓(lname)列。如果要按姓查找特定职员,与必须搜索表中的所有行相比,索引会帮助您更快地获得该信息。索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引的方式与您使用书籍中的索引的方式很相似:它搜索索引以找到特定值,然后顺指针找到包含该值的行。5.画一个项目的体系结构图。(难)答案:Java企业面试题整理第3页/共48页6.同步和异步有何异同,在什么情况下分别使用它们?(难)答案:通俗版:举个例子:普通B/S模式(同步)AJAX技术(异步)同步:提交请求-等待服务器处理-处理完毕返回这个期间客户端浏览器不能干任何事异步:请求通过事件触发-服务器处理(这是浏览器仍然可以作其他事情)-处理完毕--------------------------------------------------------------------------------------------------------------------同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。所以,要我请你吃饭就用同步的方法,要请我吃饭就用异步的方法,这样你可以省钱。--------------------------------------------------------------------------------------------------------------------举个例子打电话时同步发消息是异步综述版:异步通信”是一种很常用的通信方式。异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的。当然,接收端必须时刻做好接收的准备(如果接收端主机的电源都没有加上,那么发送端发送字符就没有意义,因为接收端根本无法接收)。发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。异步通信的好处是通信设备简单、便宜,但传输效率较低(因为开始位和停止位的开销所占比例较大)。异步通信也可以是以帧作为发送的单位。接收端必须随时做好接收帧的准备。这是,帧的首部必须设有一些特殊的比特组合,使得接收端能够找出一帧的开始。这也称为帧定界。帧定界还包含确定帧的结束位置。这有两种方法。一种是在帧的尾部设有某种特殊的比特组合来标志帧的结束。或者在帧首部中设有帧长度的字段。需要注意的是,在异步发送帧时,Java企业面试题整理第4页/共48页并不是说发送端对帧中的每一个字符都必须加上开始位和停止位后再发送出去,而是说,发送端可以在任意时间发送一个帧,而帧与帧之间的时间间隔也可以是任意的。在一帧中的所有比特是连续发送的。发送端不需要在发送一帧之前和接收端进行协调(不需要先进行比特同步)。每个字符开始发送的时间可以是任意的t00110110起始位结束位t每个帧开始发送的时间可以是任意的以字符为单位发送以帧为单位发送帧开始帧结束。“同步通信”的通信双方必须先建立同步,即双方的时钟要调整到同一个频率。收发双方不停地发送和接收连续的同步比特流。但这时还有两种不同的同步方式。一种是使用全网同步,用一个非常精确的主时钟对全网所有结点上的时钟进行同步。另一种是使用准同步,各结点的时钟之间允许有微小的误差,然后采用其他措施实现同步传输。串口进行通信的方式有两种:同步通信方式和异步通信方式。同步通信方式要求通信双方以相同的时钟频率进行,而且准确协调,通过共享一个单个时钟或定时脉冲源保证发送方和接收方的准确同步,效率较高;异步通信方式不要求双方同步,收发方可采用各自的时钟源,双方遵循异步的通信协议,以字符为数据传输单位,发送方传送字符的时间间隔不确定,发送效率比同步传送效率低。7.说说你所熟悉或听说过的J2EE中的几种常用模式,及对设计模式的看法(中)答案:工厂模式、单例模式、代理模式、门面模式等设计模式就是解决某一类问题的方法论8.下列是类和对象关系得是(B)(易)A.苹果和橘子B.水果和苹果C.水果和水果刀D.苹果和水果刀9.inti=0;i=i++;执行这2句话后变量i的值为(A)(难)A.0B.1C.2D.310.怎样用2个栈实现队列(难)答案:队列的要求是先进先出,用两个栈可以很容易的实现假设其中一个栈为s1,另一个为s2入队:将元素放入s1中,s2始终为空出队:1).首先将s1中的元素全部导入s2的栈中,清空s1;2).然后再将s2栈顶元素出栈,保留下来;3).将s2剩余元素导入s1中,恢复数据原有顺序,就可以了。11.用递归实现任意一个数的阶乘(中)publicclasstest{publicstaticvoidmain(String[]args){System.out.println(fuc(100));}publicstaticdoublefuc(intn){if(n==1)return1;elsereturnn*fuc(n-1);}}Java企业面试题整理第5页/共48页12.使用递归检索指定文件夹中的资源(难)packagecom.accp;importjava.io.File;importjava.util.ArrayList;importjava.util.Iterator;importjava.util.List;publicclassRecursive{privatestaticListfileList=newArrayList();/***使用递归搜索指定文件夹中的资源*@parampath要搜索的文件目录*@return包含文件路径的列表*/publicstaticListsearchFile(Stringpath){try{//ListfileList=newArrayList();Filedir=newFile(path);File[]files=dir.listFiles();if(files==null){returnnull;}for(inti=0;ifiles.length;i++){if(files[i].isDirectory()){fileList.add(files[i].getAbsolutePath());searchFile(files[i].getAbsolutePath());}else{StringstrFileName=files[i].getAbsolutePath().toLowerCase();fileList.add(files[i].getAbsolutePath());}}returnfileList;}catch(Exceptione){e.printStackTrace();returnnull;}}publicstaticvoidmain(String[]args){Stringpath=c:\\java;longstart=System.currentTimeMillis();Recursiver=newRecursive();Listfiles=r.searchFile(path);Java企业面试题整理第6页/共48页System.out.println(共有文件数量:+files.size());System.out.print(总共用时:);System.out.println(System.currentTimeMillis()-start);Iteratori=files.iterator();while(i.hasNext()){System.out.println(i.next());}}}13.编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。这个程序要
本文标题:Java企业面试题整理2011
链接地址:https://www.777doc.com/doc-2878507 .html