背景:
- 面试的公司是二线及以下。不包括阿里,头条,快手,美团,拼多多
-
面试前的准备建议:
简历一定要好好写,面试态度要好(大佬例外)
- 做过的项目说的清楚。遇到过哪些问题,如何排查的,如何解决的。项目的难点,优点,缺点,未来如何改进。
- 要有一点架构思维,了解互联网常见架构,了解微服务,如何处理高并发,高可用
- 终面的时候,如果是产品大佬,那么你的回答得有高度,得从产品角度考虑问题。如果是技术大佬,你的回答最好有点前沿的技术(吹水嘛,你懂的)。
- 要刷题,算法题要写的出来,大厂比较看重。另外大厂喜欢问一下模糊的问题,考察你的广度和对问题认识的深度。
下面这些全是基础,我理解面试的时候其实占比不重,只有没项目问的时候,才问这些。
给年轻人的建议:
算不上什么建议,我自己没做好,算是教训吧。
- 不存在什么35岁的问题,资深的码农总是稀缺的。勇敢的踏出那一步,加油干。
- 如果想做一个真正的码农,把基础打好,操作系统,计算机网络,计算机组成原理,数据结构和算法等。就算用不到,至少你会是个自信的、心满意足的码农。
- 多说一句,码农不分什么科班,培训班,不在意学历,只要有基本的逻辑就可以干,又不是造火箭。
- 把代码写好,这一条满足了,你就是个优秀的码农。
- 最好是跟着工作项目学习,这样才能沉淀成你自己的。
- 工作中多做,多想,多总结,多参与上下游的业务,这样你会学到更多,会对整体的业务流程,整体的架构有更多了解。懂得多了,自然机会也就多了,会被重用,形成正反馈。往俗了说对面试有好处,其实可以助你成为架构师,业务专家。
- 打好基础,做几个项目,然后尽早确立你的方向。不管是业务的,还是技术的,成为某方面的专家,这才是你的铁饭碗。中途变更的话成本很高,到时候没法跟年轻人竞争,O(∩_∩)O哈哈~
- 脚踏实地,抬头望天。学习一些新东西,新的东西没那么内卷,机会多。
- 有时间的话,参与一些开源项目,参与一些社区,看看别人在做什么,培养一些兴趣爱好,交些朋友,这样可以拓宽你的眼界,机会也会多些,关键时刻还能得到别人的指点和帮助,世界上还是好人多。
- 锻炼你的表达能力,面试有时候是靠说的。
- 多看英文资料,英文书籍,练口语,这样如果你不想996的话,还有别的选择。
- 以上都是我做的不好的,现在的年轻人很厉害,加油!
面试题总结
redis常见问题
redis的数据类型有哪几种,你们用了哪几种,是怎么用的
redis string类型的底层数据结构是怎么样的?
redis为什么快
redis是怎么实现原子性的(腾讯云问的)
redis为什么要用单线程,最新的redis 6.0用了多线程,是怎么实现的,你了解吗?
redis的跳表了解吗,数据结构是怎么样的,查询的时间复杂度是多少
你们的redis是哨兵模式还是集群模式,具体是怎么配置的,了解吗?
redis的分布式锁用过吗,怎么用的?
redis单实例的QPS是多少,有测过吗?最新的6.0 QPS多少知道吗?
redis的大 key 多大算大?单个redis实例建议多大内存?
写时复制了解吗,在redis哪里用到了?在计算机的哪些场景或者算法里有用到?(腾讯云问的)
redis的网卡如果被打爆了,怎么办?redis缓存和本地缓存是怎么配合使用的,数据的一致性是如何解决的?(好未来架构师问的)mysql
你们mysql引擎用的什么?mysql innodb的索引是怎么实现的?为什么用B+树,优点是什么,与B树的区别是什么?
B+树索引的最底层单元是什么?什么决定了B+树的高度?B+树的叶子节点是单向链表还是双向链表?
怎么加索引,索引什么情况下失效,联合索引什么时候失效,覆盖索引了解吗?
为什么不用uuid做主键,影响的写入性能还是读取性能?如果业务上能保证唯一性,那么还需要建唯一索引吗?会影响写入性能吗?
mysql的隔离级别有几种,默认的隔离级别是什么,互联网常用的隔离级别是什么?
ACID了解吗,mysql是用什么机制保证的,redo log和undo log说一下
MVCC是什么,是如何实现的,算法说一下?
幻读是什么意思?mysql是怎么处理幻读的?间隙锁了解吗?唯一索引有间隙锁吗?
锁分哪几种,行锁是锁在哪里的?
mysql 主从同步的过程是什么样的
mysql的高可用是怎么做的
慢查询怎么处理?explain的type有几种类型,你常见的有哪几种?
你们的mysql数据量有多大,如何分库分表,分库分表以后如何查询,如何做分布式事务
怎么优化mysql
了解TiDB吗,TiDB是如何实现的kafka
事务消息了解吗,rocketmq的事务消息是怎么实现的?
kafka是如何保证不丢消息的
kafka为什么快? 零拷贝说一下,零拷贝有几种实现?
kafka的IR和高水位是什么意思,说一下
kafka主要解决什么问题,你们项目里是怎么用的
kafka如何保证消息的有序性
kafka如果消息堆积了如何处理项目:
介绍一下你们的项目
你们项目的服务对象是谁,解决了他们的什么问题
你们的并发量多大,高并发是如何解决的
画一下你们项目的架构图
你们项目里的难点,优点,有什么可以改进的地方管理:
你是怎么控制项目进度的
你觉得怎么定义工作的成功网络:
TCP三次握手,四次挥手说一下。为什么需要三次握手,最后一次如果没有行不行,会有什么问题?TIME_WAIT的作用是什么?2MSL是多长?线上大量的close_wait和time_wait该如何解决?
http2.0的优点说一下。了解QUIC吗?怎么实现的?
https的握手过程说一下。证书是如何验证的?为什么不用非对称加密通信?
浏览器输入一个url到返回,整个过程说一下,都用到了哪些协议?浏览器的渲染过程了解吗?
一台服务器最多可以建立多少个TCP链接,为什么?Linux:
常用的命令有哪些
怎么查看端口占用情况,怎么查看进程打开了哪些文件
如何查看内存,如何查看磁盘,du是什么意思
linux的文件系统了解吗,inode了解吗
线上服务器问题如何排查。cpu loader average什么意思,cpu利用率什么意思Nginx:
location的优先级是什么样的kubernetes:
kubernetes有哪些组件
kubernetes调度一个pod的整个流程是怎么样的
docker的实现原理说一下微服务:
微服务的优点是什么
微服务的服务拆分你们是怎么做的
微服务的服务治理你们是怎么做的,都包括哪些模块
RPC具体是怎么实现的,有哪些组件可以说一下吗?RPC的连接池是怎么实现的,数据结构是什么样的,链接如何保活(腾讯云)Go:
协程和线程的区别
goroutine初始栈大小,上下文如何切换,存在哪里
GMP说一下,P有多少个,G有多少个,M有多少个。系统调用的时候M会如何,网络IO的时候M会怎样。
Go的GC说一下,扫描从哪里发起?
Go的内存分配说一下
Go有哪些坑?for range为什么会有坑?
Go的map是如何实现的,是并发安全的吗?sync.map是如何实现的?
CAS知道吗,在Go的哪些地方用到了?
sync.pool是如何实现的
channel的优点是什么,如何实现的(腾讯云)
channel的使用场景。close channel的时候发生了什么?
Go select是怎么用的,具体如何实现的?
如果我希望主协程通知并且等待子协程关闭,应该如何做?context了解吗,怎么用的,如何实现的?
写一个生产者消费者模型吧
Gin的中间件是如何实现的
Gin的一次请求整个过程是如何调用的
Gin的基数树知道吗,说一下
Gin请求里的request buffer可以读几次(美餐)
goroutine的泄露如何排查?pprof了解吗,说一下算法题:
反转单链表
判断链表里是否有环
八皇后问题
找最大的K个数,有O(N)的算法吗?
最大回文子串
最近的平方根。比如10的结果是3
把两个链表连起来。比如AB两个链表,顺序是A1 B1 A2 B2 A3 B3…