点击上方“ 开发者技术前线 ”,选择“星标”

13点21分打卡 就是真爱

作者:codegoose |  责编:可可

链接:https://segmentfault.com/a/1190000017864721

经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于开始重拾面试信心,再次出征。

鹅厂

面试职位:go后端开发工程师,接受从Java转语言。

都知道鹅厂是cpp的主战场,而以cpp为背景的工程师大都对os,network这块要求特别高,不像是Java这种偏重业务层的语言,之前面试Java的公司侧重还是在数据结构、网络、框架、数据库和分布式。所以OS这块吃的亏比较大。

一面基础技术面

电话面试,随便问了些技术问题,最后还问了个LeetCode里面medium级别的算法题,偏简单。

1、redis有没有用过,常用的数据结构以及在业务中使用的场景,redis的hash怎么实现的,rehash过程讲一下和JavaHashMap的rehash有什么区别?redis cluster有没有了解过,怎么做到高可用的?redis的持久化机制,为啥不能用redis做专门的持久化数据库存储?

2、了不了解tcp/udp,说下两者的定义,tcp为什么要三次握手和四次挥手?tcp怎么保证有序传输的,讲下tcp的快速重传和拥塞机制,知不知道time_wait状态,这个状态出现在什么地方,有什么用(参考quic)?

3、知道udp是不可靠的传输,如果你来设计一个基于udp差不多可靠的算法,怎么设计?

4、http与https有啥区别?说下https解决了什么问题,怎么解决的?说下https的握手过程。

5、看你项目里面用了etcd,讲解下etcd干什么用的,怎么保证高可用和一致性?

6、既然你提到了raft算法,讲下raft算法的基本流程?raft算法里面如果出现脑裂怎么处理?有没有了解过paxos和zookeeper的zab算法,他们之前有啥区别?

7、你们后端用什么数据库做持久化的?有没有用到分库分表,怎么做的?

8、索引的常见实现方式有哪些,有哪些区别?MySQL的存储引擎有哪些,有哪些区别?InnoDB使用的是什么方式实现索引,怎么实现的?说下聚簇索引和非聚簇索引的区别?

9、有没有了解过协程?说下协程和线程的区别?

10、算法题一个,剑指offer第51题,数组中的重复数字?

自己的回答情况,redis这块没啥问题,具体rehash有印象是渐进式的,但是具体原理可能答的有点出入。tcp的time_wait这块答的不是很好,之前没有了解过quic机制的实现,所以问可靠性udp的时候,基本上脑子里就照着tcp的实现在说。https这块没啥说的,之前项目里面有用到类似的东西,研究的比较清楚了。raft算法这个因为刚好在刷6.824(才刷到lab2。。。),答的也凑合,不过paxos和zab算法确实不熟悉,直接说不会。MySQL这块很熟了,包括索引,锁,事务机制以及mvcc等等,没啥说的,都已经补齐了。协程和线程,主要说了go程和Java线程的区别以及go程的调度模型。面试官提示没有提到线程的有内核态的切换,go程只在用户态调度。最后一个算法题,首先说使用HashMap来做,说空间复杂度能不能降到O(1),后面想了大概5min才想出来原地置换的思路。

二面项目技术面

1、主要针对自己最熟悉的项目,画出项目的架构图,主要的数据表结构,项目中使用到的技术点,项目的总峰值qps,时延,以及有没有分析过时延出现的耗时分别出现在什么地方,项目有啥改进的地方没有?

2、如果请求出现问题没有响应,如何定位问题,说下思路?

3、tcp 粘包问题怎么处理?

4、问了下缓存更新的模式,以及会出现的问题和应对思路?

5、除了公司项目之外,业务有没有研究过知名项目或做出过贡献?

基本都没有啥问题,除了面试官说项目经验稍弱之外,其余还不错。

三面综合技术面

这面面的是阵脚大乱,面试官采用刨根问底的方式提问,终究是面试经验不够,导致面试的节奏有点乱。举个例子,其中有个题是:go程和线程有什么区别?

答:起一个go程大概只需要4kb的内存,起一个Java线程需要1.5MB的内存;go程的调度在用户态非常轻量,Java线程的切换成本比较高。接着问为啥成本比较高?因为Java线程的调度需要在用户态和内核态切换所以成本高?为啥在用户态和内核态之间切换调度成本比较高?简单说了下内核态和用户态的定义。接着问,还是没有明白为啥成本高?心里瞬间崩溃,没完没了了呀,OS这块依旧是痛呀,支支吾吾半天放弃了。

后面所有的提问都是这种模式,结果回答的节奏全无,感觉被套路了。大多度都能回答个一二甚至是一二三,但是再往后或者再深入的OS层面就GG了。

后面问了下项目过程中遇到的最大的挑战,以及时怎么解决的?

后面还问了一个问题定位的问题,服务器CPU 100%怎么定位?可能是由于平时定位业务问题的思维定势,加之处于蒙蔽状态,随口就是:先查看监控面板看有无突发流量异常,接着查看业务日志是否有异常,针对CPU100%那个时间段,取一个典型业务流程的日志查看。最后才提到使用 top命令来监控看是哪个进程占用到100%。果然阵脚大乱,张口就来,捂脸。。。本来正确的思路应该是先用 top定位出问题的进程,再用 top定位到出问题的线程,再打印线程堆栈查看运行情况,这个流程换平时肯定能答出来,但是,但是没有但是。还是得好好总结。

最后问了一个系统设计题目(朋友圈的设计),白板上面画出系统的架构图,主要的表结构和讲解主要的业务流程,如果用户变多流量变大,架构将怎么扩展,怎样应对?这个答的也有点乱,直接上来自顾自的用了一个通用的架构,感觉毫无亮点。后面反思应该先定位业务的特点,这个业务明显是读多写少,然后和面试官沟通一期刚开始的方案的用户量,性能要求,单机目标qps是什么等等?在明确系统的特点和约束之后再来设计,而不是一开始就是用典型互联网的那种通用架构自顾自己搞自己的方案。

总结

1、tcp/udp,http和https还有网络这块(各种网络模型,已经select,poll和epoll)一定要非常熟悉。

2、一定要有拿的出手的项目经验,而且要能够讲清楚,讲清楚项目中取舍,设计模型和数据表。

3、分布式要非常熟悉。

4、常见问题定位一定要有思路。

5、操作系统,还是操作系统,重要的事情说三遍。

6、系统设计,思路,思路,思路,一定要思路清晰,一定要总结下系统设计的流程。

7、一点很重要的心得,平时blog和专栏看的再多,如果没有自己的思考不过是过眼云烟,根本不会成为自己的东西,就像内核态和用户态,平常也看过,但是没细想,突然要自己说,还真说不出来,这就很尴尬了。勿以浮沙筑高台,基础这种东西还是需要时间去慢慢打牢,多去思考和总结。

END

开发者技术前线 ,汇集技术前线快讯和关注行业趋势,大厂干货,是开发者经历和成长的优秀指南。

历史推荐

喜欢就点个好看吧!

面试鹅厂,我被虐的体无完肤相关推荐

  1. 面试鹅厂,我三面被虐的体无完肤。。。

    作者:codegoose https://segmentfault.com/a/1190000017864721 经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于重拾面试信心,再次 ...

  2. 面试鹅厂,我三面被虐的体无完肤……

    戳蓝字"CSDN云计算"关注我们哦! 作者 | codegoose 来源 | https://segmentfault.com/a/1190000017864721   经过半年的 ...

  3. 面试鹅厂,我三面被虐的体无完肤

    经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于重拾面试信心,再次出征. 鹅厂 面试职位:go后端开发工程师,接受从Java转语言 都知道鹅厂是cpp的主战场,而以cpp为背景的工 ...

  4. 在鹅厂面试5轮后扑街!微服务架构,我拿什么拯救你!

    上周五接到朋友的电话,此前他一路披荆斩棘,离鹅厂Offer大概仅一步之遥.电话一接通我就说了一通让他请客吃饭的话,对面沉默了几秒钟,淡淡地说了句 "我终面没过...." 这让我一时 ...

  5. python后台开发知识点_面试总结:鹅厂Linux后台开发面试笔试C++知识点参考笔记...

    文章每周持续更新,各位的「三连」是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 文章是由自己笔试面试腾讯的笔记整理而来,整理的时候又回顾了一遍,中间工 ...

  6. 一时语噻:二面鹅厂,面试官问出Nginx你了解吗?

    前天二面鹅厂,面试官问出了"nginx你了解吗?"这样宽泛直白的句式,我一时抓不到重点,一时语噻. 下班想了一下,平时潜移默化用到不少nginx的能力,但在面试的时候没有吹成对应的 ...

  7. 鹅厂招人啦!限量内推码和面试直通卡!助你直拿Offer(内附岗位介绍)

    令人翘首以盼的鹅厂终于来招人啦!这次腾讯公司的领导们带来了超多岗位,可以说是非常有诚意了.无论你是哪个领域的人才,只要你有能力,这里就有你的一席之地. 当机会砸到你的头上,就一定要把握住哦!快点预约直 ...

  8. 鹅厂员工告诉你面试互联网公司要不要穿正装

    很多求职互联网的同学 在面试前依旧会有的疑问是: 去面试互联网公司, 到底要不要穿正装? 有的同学甚至为了面试 专门买了一套正装 可以说是很隆重了 自从入了互联网这一行, 我从白熊店长脚上一双 常年不 ...

  9. 【经验分享】鹅厂机器学习岗暑期实习面经总结

    作者 | 空 学校 | 华南理工大学 研究 | 机器学习 出品 | AI蜗牛车 个人经历 本人本科双非,华南某985硕士,本硕都是计算机专业.本科玩过一段时间ACM,巨菜(现在想想,不管是考研还是求职 ...

最新文章

  1. 算法笔记-递归算法、递归排序、递归的时间复杂度、master公式(也叫主方法)
  2. C++_标准模板库STL概念介绍5-其他库与总结
  3. 使用kuberbuilder创建工程示例
  4. 真机运行报错:Could not change executable permissions on the application
  5. 【旅行】——出发!露营去。
  6. python 怎么将数组转为列表_怎么将视频转为GIF动态图 表情包怎么制作
  7. Android逆向笔记-通过ApkTool源码分析未能反编译APK的原因
  8. 常考程序 —— 笔试篇
  9. matlab层次分析法代码_基于主成分分析法和层次分析法的工程项目经理胜任力评价研究...
  10. 我的编程学习日志(9)--交换A,B值得方法(相加,异或,swap函数)
  11. 1013_MISRA C规范学习笔记9
  12. 人工智能 深度学习 机器学习
  13. ThinkPHP 的 Vender的简单实用
  14. 第二类曲线、曲面积分计算公式
  15. ElasticSearch 定时删除指定天数的数据实践
  16. 天嵌开发版 imx6 移植qt
  17. C语言%lld、%llu无法正常输出比long long长整数小的数
  18. 5款新手常用的java编程工具,有你正在用的吗?
  19. 服务器电源输出电压不稳定,电源模块输出电压变低的原因和解决方法
  20. java中测试计算能力_CPU运算性能测试、JAVA性能创纪录_三星 I728_手机其它OS-中关村在线...

热门文章

  1. 关于“新婚姻法”的想法
  2. go语言 服务器接入小米支付SDK
  3. 高通QSEE中使用qsee_stor_write_sectors函数存储数据到emmc的RPMB分区
  4. ESP8266(Nodemcu)的I2C通信
  5. Java接口实现多态 -- 笔记本电脑综合实例
  6. 【思考比传道更重要】
  7. 手机计算机那个简单好用,手机计算器隐藏的2个功能,只需要简单划一划,越早知道越好...
  8. 蓝牙/BLE基本知识梳理
  9. Relia Tech活性VEGFR重组蛋白丨小鼠 VEGF120实例展示
  10. 故宫停止开放?小县城老民警蹲守故宫6年拍下3万张绝美照片,连单霁翔院长都忍不住点赞!...