米兰的小铁匠🍦 大连理工大学·2022届
APP 内打开
1
19
42

【这篇面经有点长,抽着看吧】社招-本一年 百度小米腾讯知乎字节

因为在原公司待的不是很开心,然后决定裸辞了(千万不要裸辞!!!一方面心理压力比较大。另一方面也可能会被压薪资)

裸辞之后没着急找工作,因为原先做的东西比较偏底层,所以也是学习了一段时间先拿小公司练练手,大厂问的东西无外乎项目、基础、算法,这些的话楼主推荐几本书,基本问的东西都在这里面了《Redis设计与实现》、《Mysql技术内幕 InnoDB存储引擎》、《TCP-IP详解卷一》、《HTTP权威指南》、《深入理解Linux内核》、《研磨设计模式》、《数据结构与算法分析-c语言描述》机械工业的那个 我这边是应聘go的开发,学习go的话推荐《Go并发编程实战》、林海的《Go源码解析》最好源码和书一起看


百度

一面

redis和etcd的区别

从数据结构方面来讲 Redis支持多种数据类型(string,set,list,hash,zset)

从读写性能上来讲,Redis读写性能优异,并且提供了RDB、AOF持久化,而etcd v3的底层采用boltdb做存储,value直接持久化

从使用场景上来看,etcd更适用于服务发现,配置管理,而Redis更适用于非强一致性的需求,比如说是队列,缓存,分布式Session

两者都是KV存储,但是etcd通过Raft算法保证了各个节点间的数据和事务的一致性,更强调各个节点间的通信;Redis则时更像是内存式的缓存,因此来说读写能力很强。

Redis是c开发的,etcd是go开发的,他是源于k8s的兴起作为一个服务发现。

etcd v3只能通过gRPC访问,而redis可以通过http访问,因此etcd的客户端开发工作量高很多。

etcd的Raft算法介绍一下

ping指令的实现,涉及到哪些协议

linux的用户态和内核态,什么时候切换到内核态

为什么说线程的切换比协程要慢

redis、etcd 分布式锁的实现

redis string类型的底层实现

和c语言string的区别

获取字符串长度只需要O(1)的时间复杂度,程序仅需要访问SDS的len属性即可

c语言会产生缓冲区溢出,在Redis中如果需要对SDS进行修改时,API回显检查SDS的空间是否满足修改所需要的要求,如果不满足的话,API会自动将SDS的空间拓展到执行修改所需要的大小,然后才执行实际的修改操作

减少修改字符串时带来的内存重分配次数,SDS通过free属性记录未使用的字节,通过未使用空间,SDS实现了空间预分配和惰性空间释放两种优化策略。是的修改字符串长度N次最多需要执行N次的内存重分配。

c字符串只能保存文本数据,SDS可以保存文本或者二进制数据

二面

二面基本是场景设计题,具体忘了,有一说一百度面试体验很好,和面试官一起探讨解决的办法

之后有一道智力题吧,有10个元素存到长度为12的数组中,有两个元素重复,找出这两个元素

比如a+b通过把元素累加在进行减法运算可以得到a+b

通过累乘再进行除法运算可以得到a*b的值

考虑到假如元素溢出,那么可已通过平方累加得到a^2+b^2的值

根据关系式可以求得a,b的值

三面

go和java的区别

可以从多个角度来讲 比如面向对象来说,多态继承等等

从运行速度来讲,go的并发模型 channel和goroutine

从包管理来讲,go mod 包括之前的dep等等

go的gmp调度原理

cpu的上下文切换问题

channel有无缓冲槽的区别

主要还是从同步和异步来讲

redis的zset实现

负载均衡实现

几道算法题 现场手写的

堆排的一道问题,string化整型,链表反转

四面

手写了两道算法,单链表的中间节点 一道dp题目 百度的算法题目都是easy到meduim级别的

然后对项目问的比较细,比如在实现的虚拟链路中keepalive是怎么实现的啊,有什么可以优化的点吗

怎么查找程序的性能瓶颈等等


小米

一面

Redis缓存策略

分布式CAP原理

Mysql事务的隔离级别 分别解决了哪些问题?

mysql的存储引擎的区别?

Redis持久化的区别

Grpc的过程

二面

怼了项目 业务上不合适

怎么限制goroutine的数量?

redis为什么快?


字节跳动

一面

https的过程

客户端请求网址,服务器接收到请求后返回证书公钥

客户端验证证书的有效性和合法性,然后生成一个随机值

客户端通过证书的公钥加密随机值,将加密后的密钥发送给服务器

服务器通过私钥解密密钥,通过解密后的密钥加密要发送的内容

客户端通过密钥解密接受的内容

http keep-alive的作用

755 是什么权限? 详细见linux权限入门

7=rwx=4+2+1 5=rx

拥有者可读可写可执行 群组可读可执行 其他组可读可执行

linux 查找当前文件后20行

tail -n 20 filename

linux统计字符出现的个数

grep -o objStr filename|wc -l

epoll和poll的区别

本质都是IO多路复用

算法题 10进制转7进制

算法题 判断数独的有效性

二面

撕AVL树 撕哈希表


知乎

一面

项目

redis的多集群方案

mysql的b+索引

golang的内存分配机制

golang的多态实现

interface的底层实现

二面

只问了两道算法

连续子序列的最大和并返回所有序列

另一道忘了

三面

非递归形式的前序遍历

k个有序链表合并

项目问题

golang的context包

string类型转为[]byte过程发生了什么

redis的数据类型及底层实现

mysql聚集索引和非聚集索引底层实现

b+树和红黑树


腾讯

一面

之前看面经听说腾讯面试官惜字如金,果真就想几个字骗一段话啊

golang的多路复用

fasthttp为什么快

pprof使用

性能调优怎么做

http2.0的多路复用怎么实现的

最大连续子序列和

mysql怎么监控流量

golang调度 能不能不要p

负载均衡哪些算法?

二面

二面基本围绕项目拓展来说的 人家说你简历写的我不问。。

场景设计 秒杀、抽奖、推荐 三剑客

etcd和zk的区别

etcd的Raft算法详细讲一下

三面

项目细问包括一些基础问题没啥好讲的

职业规划等等


发布时间:2020年11月24日
用户头像
我来说两句…
共 19 条评论
王阿七 中南林业科技大学·2022届
能爆料一下薪资吗
2020年11月25日 回复
米兰的小铁匠🍦 王阿七: 😝有认识的人
2020年11月25日 回复
我叫小顺子 中国人民大学·2022届
现在go和java哪个相对容易点
2020年11月25日 回复
米兰的小铁匠🍦 我叫小顺子: 感觉java八股文多用不到,go目前没那么卷
2020年11月25日 回复
GRB130427A 云南大学·2022届
老哥最后去哪了吗
2020年11月25日 回复
米兰的小铁匠🍦 GRB130427A: 鹅厂
2020年11月25日 回复
可爱又迷人的正派角色 华北电力大学·2022届
大佬原来是写go的吗,个人经历感觉写java面go的话发挥不出对原语言特性的了解挺吃亏的
2020年11月25日 回复
米兰的小铁匠🍦 可爱又迷人的正派角色: go入手简单的
2020年11月25日 回复
maybe-fun 华中科技大学·2022届
老哥,从哪跳槽的?
2020年11月25日 回复
一枝蓝 深圳大学·2022届
我惊了
2020年11月25日 回复
Lynxxx 华北电力大学·2022届
恭喜!
2020年11月25日 回复
如果 谢菲尔德大学·2022届
我也寻思着跳槽呢哎
2020年11月25日 回复
老钱 南京农业大学·2022届
tql
2020年11月25日 回复
Reachelgogogo 南昌大学·2022届
顶顶
2020年11月25日 回复
咕噜噜 大连理工大学·2022届
牛逼
2020年11月25日 回复
森罗 山东理工大学·2022届
恭喜恭喜🎉
2020年11月25日 回复
我变成了一条狗 东北财经大学·2022届
lz很强
2020年11月25日 回复
_执着的年纪 中南大学·2022届
是都拿了offer吗
2020年11月25日 回复
一摞羊毛 电子科技大学·2022届
马了
2020年11月25日 回复