Java企业面试题整理2011

上传人:206****923 文档编号:91041880 上传时间:2019-06-21 格式:DOC 页数:48 大小:350.50KB
返回 下载 相关 举报
Java企业面试题整理2011_第1页
第1页 / 共48页
Java企业面试题整理2011_第2页
第2页 / 共48页
Java企业面试题整理2011_第3页
第3页 / 共48页
Java企业面试题整理2011_第4页
第4页 / 共48页
Java企业面试题整理2011_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《Java企业面试题整理2011》由会员分享,可在线阅读,更多相关《Java企业面试题整理2011(48页珍藏版)》请在金锄头文库上搜索。

1、Java企业面试题整理Java企业面试题整理1. 1+2+3+100构建一个函数。(易)答案:public int Sum(int n)if(n = 1)return 1;elsereturn n + Sum(n - 1);2. 描述冒泡算法。(易)答案:基本思路:对尚未排序的各元素从头到尾依次比较相邻的两个元素是否逆序(与欲排顺序相反),若逆序就交换这两元素,经过第一轮比较排序后便可把最大(或最小)的元素排好,然后再用同样的方法把剩下的元素逐个进行比较,就得到了你所要的顺序。可以看出如果有 n 个元素,那么一共要进行 n-1 轮比较,第 i 轮要进行 j=n-i 次比较。(如:有5个元素,则

2、要进行5-1轮比较。第3轮则要进行5-3次比较)3. 堆和栈的区别!(难)答案:申请方式栈:由系统自动分配。例如,在函数中一个局部变量 int b; 系统自动在栈中为b开辟空间堆:需要程序员自己申请,并指明大小,在c中malloc函数申请后系统的响应栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。堆:首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,申请大小的限制栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在 WINDOWS下,栈的大小是2M(也有

3、的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。堆:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。申请效率的比较:栈由系统自动分配,速度较快。但程序员是无法控制的。堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便.堆和栈中的存储内容栈: 在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下

4、一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。小结:堆和栈的区别可以用如下的比喻来看出:使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。4. 索引是怎样来提高搜索速度的!(难)答案:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构,例如 employee 表的姓(l

5、name)列。如果要按姓查找特定职员,与必须搜索表中的所有行相比,索引会帮助您更快地获得该信息。索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。 索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引的方式与您使用书籍中的索引的方式很相似:它搜索索引以找到特定值,然后顺指针找到包含该值的行。5. 画一个项目的体系结构图。(难)答案:6. 同步和异步有何异同,在什么情况下分别使用它们?(难)答案:通俗版:举个例子:普通B/S模式(同步)AJAX技术(异步)同步:提交请求-等待服

6、务器处理-处理完毕返回 这个期间客户端浏览器不能干任何事异步: 请求通过事件触发-服务器处理(这是浏览器仍然可以作其他事情)-处理完毕-同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。所以,要我请你吃饭就用同步的方法,要请我吃饭就用异步的方法,这样你可以省钱。-举个例子 打电话时同步 发消息是异步综述版:异步通信”是一种很常用的通信方式。异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的。当然,接收端必须时刻做好接收的准备(如果接收端主机的电源都没

7、有加上,那么发送端发送字符就没有意义,因为接收端根本无法接收)。发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。异步通信的好处是通信设备简单、便宜,但传输效率较低(因为开始位和停止位的开销所占比例较大)。异步通信也可以是以帧作为发送的单位。接收端必须随时做好接收帧的准备。这是,帧的首部必须设有一些特殊的比特组合,使得接收端能够找出一帧的开始。这也称为帧定界。帧定界还包含确定帧的结束位置。这有两种方法。一种是在帧的尾部设有某种特殊的比特组合来标志帧的结束。或者在帧首部中设有帧长度的字段。需要注意的

8、是,在异步发送帧时,并不是说发送端对帧中的每一个字符都必须加上开始位和停止位后再发送出去,而是说,发送端可以在任意时间发送一个帧,而帧与帧之间的时间间隔也可以是任意的。在一帧中的所有比特是连续发送的。发送端不需要在发送一帧之前和接收端进行协调(不需要先进行比特同步)。每个字符开始发送的时间可以是任意的t0 0 1 1 0 1 1 0起始位结束位t每个帧开始发送的时间可以是任意的以字符为单位发送以帧为单位发送帧开始帧结束。“同步通信”的通信双方必须先建立同步,即双方的时钟要调整到同一个频率。收发双方不停地发送和接收连续的同步比特流。但这时还有两种不同的同步方式。一种是使用全网同步,用一个非常精确

9、的主时钟对全网所有结点上的时钟进行同步。另一种是使用准同步,各结点的时钟之间允许有微小的误差,然后采用其他措施实现同步传输。串口进行通信的方式有两种:同步通信方式和异步通信方式。同步通信方式要求通信双方以相同的时钟频率进行,而且准确协调,通过共享一个单个时钟或定时脉冲源保证发送方和接收方的准确同步,效率较高;异步通信方式不要求双方同步,收发方可采用各自的时钟源,双方遵循异步的通信协议,以字符为数据传输单位,发送方传送字符的时间间隔不确定,发送效率比同步传送效率低。7. 说说你所熟悉或听说过的J2EE中的几种常用模式,及对设计模式的看法(中)答案:工厂模式、单例模式、代理模式、门面模式等设计模式

10、就是解决某一类问题的方法论8. 下列是类和对象关系得是(B)(易)A苹果和橘子 B.水果和苹果C.水果和水果刀 D.苹果和水果刀9. int i=0; i=i+;执行这2句话后变量i的值为(A)(难)A. 0 B. 1 C. 2 D. 310. 怎样用2个栈实现队列(难)答案:队列的要求是先进先出,用两个栈可以很容易的实现 假设其中一个栈为s1, 另一个为s2 l 入队:将元素放入s1中,s2始终为空 l 出队: 1). 首先将s1中的元素全部导入s2的栈中,清空s1;2). 然后再将s2栈顶元素出栈,保留下来;3). 将s2剩余元素导入s1中,恢复数据原有顺序,就可以了。11. 用递归实现任

11、意一个数的阶乘(中)public class test public static void main(String args) System.out.println(fuc(100); public static double fuc(int n) if(n=1) return 1; else return n*fuc(n-1); 12. 使用递归检索指定文件夹中的资源(难)package com.accp;import java.io.File;import java.util.ArrayList;import java.util.Iterator;import java.util.Lis

12、t;public class Recursive private static List fileList = new ArrayList();/* * 使用递归搜索指定文件夹中的资源 * param path 要搜索的文件目录 * return 包含文件路径的列表 */public static List searchFile(String path) try / List fileList = new ArrayList();File dir = new File(path);File files = dir.listFiles();if (files = null) return nul

13、l;for (int i = 0; i files.length; i+) if (filesi.isDirectory() fileList.add(filesi.getAbsolutePath();searchFile(filesi.getAbsolutePath(); else String strFileName = filesi.getAbsolutePath().toLowerCase();fileList.add(filesi.getAbsolutePath();return fileList; catch (Exception e) e.printStackTrace();re

14、turn null;public static void main(String args) String path = c:java;long start = System.currentTimeMillis();Recursive r = new Recursive();List files = r.searchFile(path);System.out.println(共有文件数量: + files.size();System.out.print(总共用时:);System.out.println(System.currentTimeMillis() - start);Iterator i = files.iterator();while (i.hasNext() System.out.println(i.next()

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号