字节一面

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 北京

相关推荐

10-04 19:09
门头沟学院 C++
一、 开场及背景了解自我介绍:你可以简单地自我介绍一下吗?项目性质:所以这两个项目主要是你个人的练手项目,对吧?实习经历:中间有参加过什么其他公司的实习之类的吗?或者跟着导师/师兄做一些正式的项目?求职规划:为什么没有实习经历?是因为机会比较少,还是个人规划的原因?(面试官补充:因为计算机专业通常很看重实践经验,理论上机会也比较多)所以考虑实习这件事是比较晚的吗?同辈情况:你身边的同学(的求职/升学情况)呢?二、 技术问题:计算机基础CPU缓存:CPU周围的L1, L2, L3这些多级缓存,它的主要作用或者意义是什么?因为这些缓存的存在,如何保证数据的一致性?CPU缓存(追问):既然第一次访问数据需要从主内存加载到各级缓存,这是否意味着第一次访问反而会更慢?缓存的“预读”(prefetching)机制是指什么?(面试官举例:我只想读一个变量,但它把一整块数据都读进来了,这是为了加速后续的访问吗?)并发与锁:在并发编程中,自旋锁和互斥锁分别适用于什么样的场景?并发与锁(结合项目追问):在你的实际项目中,有用到自旋锁的场景吗?可以举个例子吗?(针对你回答的动态选择策略)所以这是取决于你要更新的缓存数量,动态决策使用互斥锁还是自旋锁吗?你是这么实现的吗?你有对比过这两种策略(自旋锁 vs 互斥锁)的性能差异吗?比如,缓存数量达到多少或者耗时多长,你会切换策略?那你当时的策略具体是怎样的?比如说,更新多少个缓存的时候会采用自旋锁?三、 技术问题:C++语言菱形继承:C++的多重继承会产生菱形继承问题,你可以描述一下这具体是个什么样的问题吗?采用虚继承的方式可以彻底解决这个问题吗?会不会带来任何其他问题?菱形继承(追问):如果我们继承的两个类(A和B),我们不确定它们背后是否有一个共同的基类,那是不是意味着最好总是采用虚继承的方式,以避免潜在问题?拷贝与移动构造:你了解C++的拷贝构造函数和C++11引入的移动构造函数吗?它们俩的差异和应用场景是什么?拷贝与移动构造(结合项目追问):在你实际的项目中也有使用过(移动构造/移动语义)吗?四、 技术问题:网络协议TCP挥手:为什么TCP断开连接是四次挥手,而不是三次?TIME_WAIT状态:TCP主动关闭方在最后一次挥手后,为什么要进入一个TIME_WAIT状态并等待一段时间?TCP替代方案:TCP的TIME_WAIT机制会延长连接释放时间。现在有没有一些新的协议(比如QUIC)针对这一点做了优化,既能保证正常运行,又能有更好的连接释放性能?QUIC协议(追问):QUIC协议是如何做到在1-RTT(甚至0-RTT)就完成连接建立的?五、 技术问题:数据结构与算法LRU缓存:你了解LRU(最近最少使用)缓存淘汰算法吗?请讲讲思路,如何实现一个高性能的LRU数据结构?(针对你的回答)链表部分你会采用单向链表还是双向链表?逻辑算法题(扔弹珠/鸡蛋问题):你面前有一栋100层的楼,你手上有两个完全一样的玻璃弹珠。从某个楼层往下扔,要么碎,要么不碎,且楼层越高越容易碎。现在要找到那个“刚好会碎”的临界楼层,你觉得怎么样能够最快地找到?(面试官补充:不碎的弹珠可以重复使用,碎了就没了)六、 反问环节反问机会:我这里主要就这些问题了,你看看你有什么想要问或者想要了解的吗?
查看30道真题和解析
点赞 评论 收藏
分享
评论
3
19
分享

创作者周榜

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