java面试题总结

时间:2022-11-30 14:17:29

(1)String、StringBuffer、StringBuilder的区别
1.三者在执行速度方面的比较:StringBuilder > StringBuffer > String
2.使用建议: 1.如果要操作少量的数据用String
        2.单线程操作字符串缓冲区 下操作大量数据 StringBuilder
       3.多线程操作字符串缓冲区下操作大量数据 StringBuffer
 3.安全性上:StringBuffer是线程安全的、StringBuilder是线程不安全的
(2)equal和==的区别
“==”比较的是变量在内存中的地址,而equal比较的是内存地址指向的内容是否相同
(3) for(;1;)写的是否正确,表达的意思是什么?
不正确,for(;;){}为死循环,for(初始化<可以省略>;判断条件<可以省略>;变量更新<可省略>)
增强型for循环:for (循环变量类型 循环变量名称 : 要被遍历的对象) 循环体
(4)do while 和while do 的区别
do while会先执行一次再判断条件,没有while do,只有while ,while先判断条件再执行
( 5 )栈和队列的区别
栈是先进后出的,而队列是先进先出
(6)网络体系结构分为几层,各层分别有哪些协议
在OSI网络体系结构中分为七层,从下到上分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
各层的协议以及端口:
应用层:FTP(21)、HTTP(80)、SMTP等
表示层:ASCLL、MIDI等
会话层:NFS、SQL、RPC等
传输层:TCP、UDP等
网络层:IP、OSPF等
数据链路层:HDLC、STP等
物理层:RJ-45、RS-232等
(7)HTTP和HTTPS的区别
HTTP协议传输的数据是未加密的,而HTTPS是使用SSL对数据传输进行加密,两者的端口也不一样。
(8)Java中的四种引用
按照强弱关系由强到弱依次为:强引用、软引用、弱引用、虚引用。
强引用JVM不会进行回收,软引用JVM在内存不够的时候会进行回收,弱引用在GC时无论内存够不够都会被回收,虚引用和没有引用与之关联一样,在任何时候都可能被垃圾回收器回收
(9)Java中的垃圾回收机制
GC是JVM回收没有对象引用的内存空间的一种操作。其中标记与清除算法分为两个阶段:标记和清除。标记阶段遍历所有可达的对象的根节点并标记,没有标记的对象会被在清除阶段清除。在内存将要耗尽的时候回触发GC并暂停程序将依旧存活的对象再标记一遍进行清除。此算法有点是简单容易实现,缺点是容易产生大量碎片,GC频率高,内存容易满而且耗时。