java初级面试题

上传人:jiups****uk12 文档编号:40096748 上传时间:2018-05-23 格式:DOC 页数:11 大小:47KB
返回 下载 相关 举报
java初级面试题_第1页
第1页 / 共11页
java初级面试题_第2页
第2页 / 共11页
java初级面试题_第3页
第3页 / 共11页
java初级面试题_第4页
第4页 / 共11页
java初级面试题_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《java初级面试题》由会员分享,可在线阅读,更多相关《java初级面试题(11页珍藏版)》请在金锄头文库上搜索。

1、JAVA 相关基础知识相关基础知识1.Finally,final,finalizeFinally: 释放资源(内存之外的,打开的文件、连接、屏幕上的图形,) 总会执行 非后台线程结束,后台线程被强关,不会执行 finally 当 try 和 catch 中有 return 时,finally 在 return 之后执行,但是返回值 不会改变(finally 中不会改变已保存的返回结果) finally 中最好不要包含 return,否则程序会从 finally 中退出,返回值不 是 try 或 catch 中保存的返回值。 final: 基本数据类型:不可更改 类:不可继承 对象:引用不可变,

2、对象内容可变 finalzefinalze:回收前调用,不适合用来清理或释放资源。对象免死最后机会!保证 会被调用,但不保证会执行完(在低优先级线程中执行)2. 数据在各个网络层之间是怎么传输的? 数据在各层之间的单位都是不一样的,在物理层数据的单位称为比特(bit);在数据链路层,数据的单位称为(frame);在网络层,数据的单位称为数据包(packet);传输层,数据的单位称为数据段(segment)。 3. Hashtable、HashMap Hashtable 与 HashMap 类似,但是主要有 6 点不同。1.HashTable 的方法是同步的,HashMap 未经同步,如 Vec

3、tor 和 ArrayList 一样。2.HashTable 不允许 null,key 和 value 都不可以,HashMap 允许 null 值,key 和value 都可以。HashMap 允许 key 值只能由一个 null3.HashTable 有一个 contains(Object value)功能和 containsValue(Object value)功能一样。4.遍历的时候,HashTable 使用 Enumeration,HashMap 使用 Iterator。5.HashTable 中 hash 数组默认大小是 11,增加的方式是 old*2+1。HashMap 中has

4、h 数组的默认大小是 16,而且一定是 2 的指数。6.哈希值的使用不同,HashTable 直接使用对象的 hashCode。Hashtable 继承自 Dictionary 类,实现了 Map 接口。而 HashMap 是继承自AbstractMap,实现了 Map 接口。4. GET,POST 区别?答: 基础知识:Http 的请求格式如下。主要包含三个信息:1、请求的类型(GET 或 POST),2、要访问的资源(如resimga.jif),3、Http 版本(http/1.1)用来说明服务器要使用的附加信息这是 Http 的规定,必须空一行 请求的内容数据区别:1、Get 是从服务器

5、端获取数据,Post 则是向服务器端发送数据。2、在客户端,Get 方式通过 URL 提交数据,在 URL 地址栏可以看到请求消息,该消息被编码过;Post 数据则是放在 Html header 内提交。3、对于 Get 方式,服务器端用 Request.QueryString 获取变量的值;对用 Post 方式,服务器端用 Request.Form 获取提交的数据值。4、Get 方式提交的数据最多 1024 字节,而 Post 则没有限制。5、Get 方式提交的参数及参数值会在地址栏显示,不安全,而 Post 不会,比较安全。5. 网游服务器用 TCP 还是 UDPUDP:多用,一个 soc

6、ket,加自己的可靠协议,延迟要求高TCP:承载链接数多,500 以上有压力,魔兽世界用 TCP,1000 延迟照样玩HTTP/HTTPS:由客户端间歇性的发起无状态的查询,并且偶尔发生延迟是可以容忍6. 关于 JAVA 内存模型,一个对象(两个属性,四个方法)实例化 100 次,现在内存中的存储状态,几个对象,几个属性,几个方法。答: 由于 JAVA 中 new 出来的对象都是放在堆中,所以如果要实例化 100 次,将在堆中产生 100 个对象,一般对象与其中的属性、方法都属于一个整体,但如果属性和方法是静态的,就是用 static 关键字声明的,那么属于类的属性和方法永远只在内存中存在一份

7、。7. 红黑树的好处、AVL 树红黑树性质:根节点是黑色的;非黑即红;叶节点(空节点)是黑色的;父节点是红色的,则其孩子节点必须是黑色的;从某一个节点到叶节点的所有路径,其黑色节点数目相同。红黑树好处:红黑树是许多“平衡的”查找树中的一种,它能保证在最坏情况 下,基本的动态集合操作时间为 O(lgn)。 红黑树并不追求完全平衡,它只要求部分的达到平衡要求,降低 了对旋转的要求,从而提高了性能。由于它的设计,任何不平衡 都会在三次旋转之内解决。红黑树的算法时间复杂度和 AVL 相同, 但统计性能比 AVL 树更高。 AVL 树明显比红黑树逻辑简单的多,但应用得少,应该是增删性能 差一点,增删时需

8、要旋转的次数可能比较多。8. 数组和链表,遍历效率哪个高,为什么(cpu 缓存与内存)数组的效率高,因为数组是连续存储的,即内存地址是连续的,所以在读取数组时,会将连续的内存地址的数据放入缓存中,所以读取数组时相当于是从缓存读取。而链表遍历都是从内存读取,缓存的读取速度要比内存块 100 倍左右。9. 进程间通信, 怎么共享内存i. 匿名管道:单向,只能用于具有亲缘关系的进程间通信,如父 子进程、兄弟进程等,缓冲区大小有限制。 ii. 命名管道:单向,可以用在任意的两个不同的进程间通信。iii. 信号量:主要用于同步。iv. 共享内存:最快的 IPC 机制,一般和信号量一起使用。一个进程创建,

9、其他进程通过映射的形式,将共享内存加入到自己的 内存空间中。数据结构:shmid_ds,函数 shmget:可以创建或 打开一块共享内存。v. 消息队列:是消息的链接表,有足够权限的进程可以向队列中 添加消息,被赋予读权限的进程则可以读走队列中的消息。消 息队列克服了管道只能承载无格式字节流以及缓冲区大小受 限等缺点。 vi. Socket:更为一般的进程间通信机制,可用于不同机器之间的进程间通信。10. Fork 进程时,继承那些:继承:进程的资格、堆栈、环境、内存、打开文件的描述符、执行时关闭标志、信号控制设定、nice 值、进程调度类别、进程 组号、当前工作目录、根目录、资源限制、控制终

10、端。独有:进程号、不同的父进程号、自己的文件描述符和目 录流的拷贝、子进程不继承父进程的进程,正文,数据和其他锁定内存、在 tms 结构中的系统时间、资源使用设定为 0、阻塞信号集初始化为空集、不继承由 timer_create 函数创建的计时器、不继承异步输入和输出。11. 1000 个超大的文件,可能每一个都超过内存,怎么对他们进 行排序和消除冲项,1 个超大怎么排序和消除重项。读文件,计算 hash(%10000),分成更小的文件,重复项肯定在一个文件里,归并的时候去重12. 2 个数组,一个超大数组(10w 记录),一个小一点,几千条, 问怎么找交集。两个数组元素无重复bitmap:b

11、it 数组,已 bit 代表一个数,1 表示有,遍历大数组构造 bit 数组;遍历小数组,看对应位置是否为 113. StackOverFlow 和 OutOfMemory 分别在什么情况下出现StackOverFlow:一般情况下 stack 的默认值为 128k256k, -Xss1024m1.请求栈深度大于允许最大深度,如:深度循环递归OutOfMemory:1. 多线程环境下,能够创建的线程最大内存=物理内存-最大堆内存-最大方法区内存,java 虚拟机栈就会因为内存太小无法创建线程而产生 OutOfMemoryError2. 大的对象或数组,堆地方不够用3. 运行时常量池(方法区)因

12、无法再添加常量而产生 OutOfMemoryError4. 直接内存用光,堆与直接内存物理内存5. 虚拟机栈动态扩展时无法获得足够内存14. java 虚拟机模型虚拟机栈:方法内存模型,一个方法一个栈帧,包括:局部变量表,操作数栈,动态链接,方法出口,请求栈深度大于允许报 StackOverFlow,动态扩展无法申请足够内存,包 OOM。-xss 设栈容量默认 256k? 局部变量表:所属对象引用,方法参数,局部变量(基本类型,引用)本地方法栈:与虚拟机栈相识,面向本地 native 方法,hotspot 中与虚拟机栈合二为一堆:对象实例,数组,类加载完成便可确定对象大小,OOM方法区:也有人

13、叫永久代(Permanent Generation)类信息,常量,静态变量等在加载完成后放入方法区,即时编译器编译后的代码运行常量池:class 文件中的常量池,编译生成的字面量,符号引用(new 对象时:先检查此类的符号引用是否加载、解析、初始化过,若否,先加载);动态性:String.intern15. 虚拟机垃圾回收可达性分析:从 GCroots 向下搜索,判断是否有引用可达GCroots:虚拟机栈(本地变量表)中引用的对象,方法区中类静态属性引用的对象,方法区中常量引用的对象,本地方法栈中 JNI 引用的对象强引用:永远不会回收被引用的对象软引用 SoftRef:有用但非必需的对象,发

14、生内存溢出异常前将对象列进回收范围中进行第二次回收,如果此次回收还没有足够内存才会抛异常弱引用 WeakRef:非必需对象,只能生存到下一次垃圾回收之前,无论内存是否够,都会回收虚引用 PhantomRef:完全不对生存时间构成影响,也无法通过虚引用来取得一个对象实例标记整理算法:所有存活的对象都向一端移动,然后清理边界以外的内存分代收集:当前多采用,java 堆分成:新生代 Eden,老年代(Survivor,两个 from to)新生代:复制算法,老年代:存活率高,适合标记清理或整理hotspotSerial: 复制算法 单线程 client 模式默认新生代收集器,stop the wor

15、ld,简单高效ParNew: Serial 的多线程版本,其他都 server 模式首选,只有它能跟 CMS 搭配Parallel Scavenge: 关注吞吐量(cpu 执行用户)并行:多个收集线程同时收集并发:收集线程和用户线程同时,不一定并行可能交替方法区(hotspot 的永久代) 也可以回收废弃常量的回收类的回收: 无对象,classloader 已回收,该类对应的 class 文件没有被引用,且不可通过反射获取该方法复制算法:老年代做担保,新生代分三块一个 Eden80 两个 survivor 都是 1016. string 类 能否继承?如果写一个类 不能被继承 final 外

16、还有什么方法不能,因为是 final 的。还可以把构造函数私有化,单例模式18. session 和 cookie 的区别:session 放在服务器,cookie 放在客户端session 不区分路径,在同一个用户在访问一个网站期间,所有的 session 在任何一个地方都可以访问到。而 cookie 中如果设置了路径参数,那么同一个网站中不同路径下的cookie 互相是访问不到的。也就是说,同一个用户的 cookie,他换了浏览器,就访问不到之前的那个不同牌子的浏览器的 cookie 了。session 中保存的是对象,cookie 中保存的是字符串。 由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以 session 机制可能需要借助于 cookie 机制来达到保存标识的目的,但实际上它还有其他选择【经常被使用的一种技术叫做 URL 重写,就是把 session id 直接附加在 URL 路径的后面。还有一种技术叫做表单隐藏字段】。20. 单例模

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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