之前收集整理的这篇文章主要介绍了二战腾讯倒在三面:我意识到自己与一线大厂程序员的差距,小编觉得挺不错的,现在分享给大家,也给大家做个参考。
简单说一下吧,本人疫情还没开始时面试过一次鹅厂,在MysqL、redis这方面惨败,经过半年的沉淀,加上对MysqL,redis和分布式这块的补齐,终于重拾面试信心,再次出征。 二战腾讯面试职位:go后端开发工程师,接受从Java转语言。 都知道腾讯是cpp的主战场,而以cpp为背景的工程师大都对os,network这块要求特别高,不像是Java这种偏重业务层的语言。 之前面试Java的公司侧重还是在数据结构、网络、框架、数据库和分布式。所以OS这块吃的亏比大。 一面:基础技术面电话面试,随便问了些技术问题,最后还问了个LeetCode里面medium级别的算法题,偏简单。大概整理回忆了一下:
redis有没有用过,常用的数据结构以及在业务中使用的场景。
redis的hash怎么实现的?
rehash过程讲一下和JavaHashMap的rehash有什么区别?
redis cluster有没有了解过,怎么做到高可用的?
说说redis的持久化机制,为啥不能用redis做专门的持久化数据库存储?
了不了解tcp/udp,说下两者的定义,tcp为什么要三次握手和四次挥手?
tcp怎么保证有序传输的,讲下tcp的快速重传和拥塞机制
知不知道time_wait状态,这个状态出现在什么地方,有什么用?
udp是不可靠的传输,如果你来设计一个基于udp差不多可靠的算法,怎么设计?
http与https有啥区别?说下https解决了什么问题,怎么解决的?说下https的握手过程。
看你项目里面用了etcd,讲解下etcd干什么用的,怎么保证高可用和一致性?
既然你提到了raft算法,讲下raft算法的基本流程?raft算法里面如果出现脑裂怎么处理?
有没有了解过paxos和zookeeper的zab算法,他们之前有啥区别?
你们后端用什么数据库做持久化的?有没有用到分库分表,怎么做的?
索引的常见实现方式有哪些,有哪些区别?
MysqL的存储引擎有哪些,有哪些区别?
InnoDB使用的是什么方式实现索引,怎么实现的?说下聚簇索引和非聚簇索引的区别?
有没有了解过协程?说下协程和线程的区别?
算法题一个,剑指offer第51题,数组中的重复数字?
大概说下我自己的回答情况,redis这块没啥问题,具体rehash有印象是渐进式的,但是具体原理可能答的有点出入。 tcp的 time_wait 这块答的不是很好,之前没有了解过quic机制的实现,所以问可靠性udp的时候,基本上脑子里就照着tcp的实现在说。 https这块没啥说的,之前项目里面有用到类似的东西&