知乎核心平台架构实习一二三面面经

timeline: 8.25投简历 8.27打电话约了8.30的一面

面试内容:
1. 自我介绍
2. 介绍项目(详细介绍了招新平台的项目,随后的问题基本顺着项目的一些内容展开)
3. 项目中为什么使用了redis来存储session
4. 如果redis服务宕机了,你如何恢复数据(redis数据持久化,AOF,RDB)
5. 问redis集群怎么设计,答了cluster架构和master-slave + sentinel架构,随后继续问后者集群间如何通信,如何同步,如果master宕机了,如何再选出一个新的master(这里我直接把cluster架构的raft算法选择主节点的方法混淆到master-slave上去了,master-slave+sentinel架构中raft算法主要应用于master节点down了之后,各个sentinel选出一个领头sentinel负责故障转移)
6. 从上一个问题引入如何将数据分配存储到不同的redis节点上(分布式存储中的数据分片问题:hash,一致性hash(不带虚拟节点,带虚拟节点),range based)
6. 系统设计:给定一个二叉树,有多个线程对其进行增删改查,怎样保证线程安全(没咋准备,答得一般般)
7. 计网:tcp建立连接的过程(服务器:socket bind listen accept 客户端:socket connect;connect的时候发生tcp三次握手,随后详细说了一下三次握手)
8. 操作系统:用户态转换到内核态的几种情况
9. go语言:垃圾回收原理
10. go语言:slice和array的区别
11. go语言:map是否支持并发读写,怎么让他支持(使用sync.Map),随后问了sync.Map的原理,只简单提到了冗余设计,具体的不清楚
12. go性能调优:直接答了个没咋接触过...

一共十几个问题完整答上来的只有三四个但是还是过了...准备二面,感觉更难(

更新二面(本来说前几天搞结果忘了淦)
timeline:二面时间9.1
面试内容:
1. 自我介绍
2. 写了一道算法(二分查找),但是corner没处理好,折腾了15分钟,当时感觉应该是凉凉了
3. 操作系统:多个线程/进程同时访问一个内存地址如何处理;段页式存储管理(问的比较细);进程与线程;进程通信(问了有哪几种方式,还问了个共享内存通信对应的系统调用函数)
4. 计网:tcp三次握手
5. 代码:用goroutine实现一个多线程顺序输出的程序(我写完发现跑不起来,然后面试官和我一起看了快10分钟,都没发现哪里写的有问题,然后面试就结束了)

三面:
timeline:三面时间9.4
leader面,感觉这个leader还是挺热情的,面试过程感觉挺不错
面试内容:
1. 自我介绍
2. 计网:tcp三次握手,网络编程(tcp server/client的建立和连接过程),IO多路复用(select poll epoll epoll的两种模式),arp协议
3. golang:go轮询器,Context,go调试技巧,性能调优
三面整体答的还行,问的大部分还是准备到了hhh
三面面试时间挺短的,20多分钟就结束了2333,然后周一收到了面试通过的通知~
#知乎实习##实习##面经##基础架构工程师##知乎#
全部评论
楼主之前有实习经历嘛?
点赞 回复
分享
发布于 2021-09-01 01:33
个人理解是:集群貌似不需要Sentinal,集群有自己随机PING机制,PING超时会类似广播出去,最终集群中的节点都会知道某个master发生了故障
点赞 回复
分享
发布于 2021-09-01 09:16
联想
校招火热招聘中
官网直投
老哥现在还去实习?😂
点赞 回复
分享
发布于 2021-09-03 00:19
老哥是22届吗
点赞 回复
分享
发布于 2021-09-06 10:02
二面面过了吗
点赞 回复
分享
发布于 2021-09-07 16:29
二叉树线程安全我想的是concurrenthashmap里面也要对红黑树进行线程安全,估计和那个思路差不多
点赞 回复
分享
发布于 2021-10-15 16:55
多个线程/进程同时访问一个内存地址如何处理,请问这个是什么意思呢?
点赞 回复
分享
发布于 2022-02-26 22:34

相关推荐

8 48 评论
分享
牛客网
牛客企业服务