1、讲一下tcp的三次握手和四次挥手,可以四次握手吗?可以三次挥手吗?
tcp三次握手:客户端发送SYN报文到服务端;服务端接受到客户端指令后,发送ACK + SYN报文到客户端;客户接受到服务端
指令后,发送ACK报文给服务端。可以四次握手,但是三次握手更简便,将ACK报文和SYN报文发送。
tcp四次握手:客户端发送FIN报文到服务端;服务端接受到客户端FIN报文后,发送ACK报文到客户端;过了一段时间,服务端
再次发送FIN报文到客户端;客户接受到服务端指令后,发送ACK报文给服务端。不可以三次挥手,因为服务端第一次发送ACK
报文后,可能还有数据处理和发送,等服务端不在处理和发送消息,才发送FIN报文给客户端。
2、hashmap可以用哪些基础数据结构去实现,具体操作过程?
数组 + 链表
先将key通过哈希算法算出在数组的位置,如果位置为空直接加入,如果不为空,判断值是否相等,相等则覆盖,不相等则遍历后面的链表,不存在则添加。
3、讲一下jvm的内存回收机制?
当内存不足自动触发垃圾回收,首先通过可达性分析算法判断哪些方法可以被回收,从根对象出发,如果发现没有被引用,则可以被回收。具体的回收算法有复制算法、标记-清楚算法、标记整理算法,其中复制算法占用内存,标记清楚算法容易造成内存碎片。常用的回收器有serial,serial old,parnow,cms、G1,其中serial和parnow主要针对于新生代、采用复制算法,serial old针对老年代、采用标记整理算法,cms主要针对于老年代、采用标记清楚算法,G1采用分代回收、针对新生代和老年代。
4、讲一下mysql的回收引擎和各自的优缺点
inodb:支持事务、行锁
memory:
myiasm:
5、实习拷打
7、算法题
8、设计一个用户投票系统,其中怎么限制每个用户投一票?
采用redis的zset数据机构,其中key为候选者id,zsore为得票数;
对于限制每个用户投一票,可以在前端进行控制,或者使用mysql记录用户操作次数。
全部评论
(3) 回帖