面试鹅厂,我三面被虐的体无完肤……
戳蓝字“CSDN云计算”关注我们哦!
作者 | codegoose
来源 | https://segmentfault.com/a/1190000017864721
经过半年的沉淀,加上对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这块没啥说的,之前项目里面有用到类似的东西,研究的比较清楚了。
raft算法这个因为刚好在刷6.824(才刷到lab2。。。),答的也凑合,不过paxos和zab算法确实不熟悉,直接说不会。
MySQL这块很熟了,包括索引,锁,事务机制以及mvcc等等,没啥说的,都已经补齐了。
协程和线程,主要说了go程和Java线程的区别以及go程的调度模型。面试官提示没有提到线程的有内核态的切换,go程只在用户态调度。
最后一个算法题,首先说使用HashMap来做,说空间复杂度能不能降到O(1),后面想了大概5min才想出来原地置换的思路。
总得来说,答的还行,一面就这么过了。
二面:项目技术面
二面从基础技术考察转移到了项目,主要问了我下面一些问题:
针对自己最熟悉的项目,画出项目的架构图,项目主要的数据表结构。
说说项目中使用到的技术点,项目的总峰值qps,时延。
有没有分析过时延出现的耗时分别出现在什么地方,项目有啥改进的地方没有?
如果请求出现问题没有响应,如何定位问题,说下思路?
tcp 粘包问题怎么处理?
然后还问了下缓存更新的模式,以及会出现的问题和应对思路?
除了公司项目之外,业余时间有没有研究过知名项目或做出过贡献?
这一面答的也比较顺利,因为都是围绕项目,自己很熟悉,基本都没有啥问题,除了面试官说项目经验稍弱之外,其余还不错。
三面:综合技术面
这面面的是阵脚大乱,面试官采用刨根问底的方式提问,终究是面试经验不够,导致面试的节奏有点乱。举个例子:
其中有个题:go程和线程有什么区别?
答:起一个go程大概只需要4kb的内存,起一个Java线程需要1.5MB的内存;go程的调度在用户态非常轻量,Java线程的切换成本比较高。
接着问为啥成本比较高?因为Java线程的调度需要在用户态和内核态切换所以成本高?为啥在用户态和内核态之间切换调度成本比较高?我简单说了下内核态和用户态的定义。
接着问,还是没有明白为啥成本高?心里瞬间崩溃,没完没了了呀,OS这块依旧是痛呀,支支吾吾半天放弃了。
后面所有的提问都是这种模式,结果回答的节奏全无,感觉被套路了。大多度都能回答个一二甚至是一二三,但是再往后或者再深入的OS层面就GG了。
后面问了下项目过程中遇到的最大的挑战,以及怎么解决的?
还问了一个问题定位的问题,服务器CPU 100%怎么定位?
可能是由于平时定位业务问题的思维定势,加之处于蒙蔽状态,随口就是:
先查看监控面板看有无突发流量异常
接着查看业务日志是否有异常,针对CPU100%那个时间段,取一个典型业务流程的日志查看
最后才提到使用
top
命令来监控看是哪个进程占用到100%
果然阵脚大乱,张口就来,捂脸。。。
对这个问题,本来正确的思路应该是先用top
定位出问题的进程,再用top
定位到出问题的线程,再打印线程堆栈查看运行情况
这个流程换平时肯定能答出来,但是,但是没有但是。还是得好好总结。
最后问了一个系统设计题目(朋友圈的设计),白板上面画出系统的架构图,主要的表结构和讲解主要的业务流程,如果用户变多流量变大,架构将怎么扩展,怎样应对?
这个答的也有点乱,直接上来自顾自的用了一个通用的架构,感觉毫无亮点。
后面反思应该先定位业务的特点,这个业务明显是读多写少。然后和面试官沟通一期刚开始的方案的用户量,性能要求,单机目标qps是什么等等?
在明确系统的特点和约束之后再来设计,而不是一开始就是用典型互联网的那种通用架构自顾自己搞自己的方案。
面试结果:3天后收到短信,被拒
总结:
tcp/udp,http和https还有网络这块(各种网络模型,已经select,poll和epoll)一定要非常熟悉
一定要有拿的出手的项目经验,而且要能够讲清楚,讲清楚项目中取舍,设计模型和数据表
分布式要非常熟悉
常见问题定位一定要有思路
操作系统,还是操作系统,重要的事情说三遍
系统设计,思路,思路,思路,一定要思路清晰,一定要总结下系统设计的流程
一点心得,平时blog和专栏看的再多,如果没有自己的思考不过是过眼云烟,根本不会成为自己的东西,就像内核态和用户态,平常也看过,但是没细想,突然要自己说,还真说不出来,这就很尴尬了。勿以浮沙筑高台,基础这种东西还是需要时间去慢慢打牢,多去思考和总结。
福利
扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!
推荐阅读:
屡试不爽的互联网架构三大马车!
2019年技术盘点容器篇(四):来自京东云的技术问答 | 程序员硬核评测
《长安十二时辰》科技梗揭秘!唐朝就能看到 5G 踪影?
天才程序员: "开发 CryptoKitties 难不难? 只需掌握这3点..."
教你如何用Python实现文本摘要模型(附教程)
微软 CTO 韦青:5G 与亚里士多德
什么限制了GNN的能力?首篇探究GNN普适性与局限性的论文出炉!
真香,朕在看了!
面试鹅厂,我三面被虐的体无完肤……相关推荐
- 面试鹅厂,我三面被虐的体无完肤。。。
作者:codegoose https://segmentfault.com/a/1190000017864721 经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于重拾面试信心,再次 ...
- 面试鹅厂,我三面被虐的体无完肤
经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于重拾面试信心,再次出征. 鹅厂 面试职位:go后端开发工程师,接受从Java转语言 都知道鹅厂是cpp的主战场,而以cpp为背景的工 ...
- 面试鹅厂,我被虐的体无完肤
点击上方" 开发者技术前线 ",选择"星标" 13点21分打卡 就是真爱 作者:codegoose | 责编:可可 链接:https://segmentfau ...
- 鹅厂系列三 : 仿QQ消息拖动小球
未来会怎样,我不知道,我只是想为了比今天好 老规矩,看看效果 嗯,前面自定义了两个视图容器,今天这个是自定义View,开始自定义前,我们应该理清自己的思路,怎么来做这个东西.用我们的QQ,我们会发现, ...
- 三面字节跳动被虐得“体无完肤”,15天读完这份pdf,终拿下美团研发岗offer
开篇:说清缘由 首先介绍一下我的个人背景,鄙人小康家庭,父母都是普通职业,供我读书长大不容易,好在我也算争气,高考发挥正常,考了个还算不错的大学,华南地区某211.今年的金三银四本是想好好拼一把,奈何 ...
- 在鹅厂面试5轮后扑街!微服务架构,我拿什么拯救你!
上周五接到朋友的电话,此前他一路披荆斩棘,离鹅厂Offer大概仅一步之遥.电话一接通我就说了一通让他请客吃饭的话,对面沉默了几秒钟,淡淡地说了句 "我终面没过...." 这让我一时 ...
- python后台开发知识点_面试总结:鹅厂Linux后台开发面试笔试C++知识点参考笔记...
文章每周持续更新,各位的「三连」是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) 文章是由自己笔试面试腾讯的笔记整理而来,整理的时候又回顾了一遍,中间工 ...
- 鹅厂入职背调,发现三个学历造假...
最近所在的事业部准备入职一批员工,背调在做到学历这一块时,发现有三个学历造假,学历编号在学信网查不到. 特别提醒:一般正规点的公司入职对学历这块都会有一个正规的查询流程,特别是大厂,对背调有严格的规范 ...
- 一时语噻:二面鹅厂,面试官问出Nginx你了解吗?
前天二面鹅厂,面试官问出了"nginx你了解吗?"这样宽泛直白的句式,我一时抓不到重点,一时语噻. 下班想了一下,平时潜移默化用到不少nginx的能力,但在面试的时候没有吹成对应的 ...
最新文章
- R语言libPaths函数获取或者设置包安装的路径实战
- Window下mysql的安装
- drf-频率组件 权限组件
- 【C语言】C语言实现面向对象编程之继承
- 2021牛客多校6 - Gambling Monster(分治FWT优化期望dp)
- Django学习笔记《一》初始化pycharm和mysql数据库及相关环境
- 数据结构链表之队列,Python3实现——7
- 从零开始学PowerShell(6)获取对象信息
- 关于Flex2的资料
- 视频分辨率全表(101种)
- python 有限域函数库_有限域:计算矩阵的逆
- c语言差分qpsk编码信道估计 pudn,基于DSP的电力线载波OFDM调制解调器设计.doc
- PS常用案例步骤详解,自学 Photoshop 2022 Mac版,多个PS后期修图小案例笔记
- 千峰商城-springboot项目搭建-06-数据库创建
- SylixOS---Attach 到进程调试方法
- kotlin的先决条件函数
- http接口测试:了解协议、请求方法、响应状态码
- 有情感会说话,虚拟人脸Zoe诞生
- 哪一种编程语言适合人工智能
- [经验栈]C#监测IPv4v6网速及流量
热门文章
- linux 多个cpu使用率,统计多台linux的CPU使用率
- java 第二天,Java复习第二天
- 安卓第一行代码第3版pdf_SPECFEM2D用户手册——第3章 网格生成——3.1 如何使用SPECFEM2D...
- 程序观点下的线性代数
- 网友不同意 | 政协常委袁亚湘院士:不建议大部分孩子学奥数
- 刚刚,三位科学家获得2019年诺贝尔物理学奖!
- 贝叶斯线性回归方法的解释和优点
- android studio sqlitedatabase,在SQLite数据库Android Studio上使用预填充数据库
- (pytorch-深度学习系列)pytorch线性回归的便捷实现
- nginx 端口转发