字节一面

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记录用户操作次数。

全部评论
你面的啥岗位的
点赞 回复 分享
发布于 09-29 16:29 陕西
前端岗位吗
点赞 回复 分享
发布于 09-29 14:03 山东
好基础,我运维岗都会。如果是第一次面字节。一面一般是基础知识,二面是场景素养,三面是架构设计与开阔视野。如果不幸加个交叉面或者挂了去其他部门的话,那后续的面试倾向就会变的很混沌,基本上什么都有可能来
点赞 回复 分享
发布于 09-28 19:55 北京

相关推荐

Java抽象带篮子:投java岗就写java,真别写c,c++,python,css了,进去让你搞这些你又不乐意
点赞 评论 收藏
分享
评论
1
12
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务