推荐阅读:

欢迎加入我们的架构师社群

阿里跳槽拼多多,80万年薪涨到160万,值不值得去?

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

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

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

后面还问了一个问题定位的问题,服务器CPU 100%怎么定位?可能是由于平时定位业务问题的思维定势,加之处于蒙蔽状态,随口就是:先查看监控面板看有无突发流量异常,接着查看业务日志是否有异常,针对CPU100%那个时间段,取一个典型业务流程的日志查看。最后才提到使用top命令来监控看是哪个进程占用到100%。果然阵脚大乱,张口就来,捂脸。。。

本来正确的思路应该是先用top定位出问题的进程,再用top定位到出问题的线程,再打印线程堆栈查看运行情况,这个流程换平时肯定能答出来,但是,但是没有但是。还是得好好总结。

最后问了一个系统设计题目(朋友圈的设计),白板上面画出系统的架构图,主要的表结构和讲解主要的业务流程,如果用户变多流量变大,架构将怎么扩展,怎样应对?

这个答的也有点乱,直接上来自顾自的用了一个通用的架构,感觉毫无亮点。后面反思应该先定位业务的特点,这个业务明显是读多写少,然后和面试官沟通一期刚开始的方案的用户量,性能要求,单机目标qps是什么等等?在明确系统的特点和约束之后再来设计,而不是一开始就是用典型互联网的那种通用架构自顾自己搞自己的方案。

3天后收到短信被拒

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

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

  3. 分布式要非常熟悉

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

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

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

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

相关资料补充学习:

  1. 系统设计入门

  2. 系统设计典型问题的思考

  3. 协程的好处有哪些

  4. Golang的goroutine是怎么实现的?

  5. Context-Switch

  6. 从Java视角理解系统结构(一)CPU上下文切换

某东南亚互联网公司

一面技术面

先笔试算法题,LeetCode medium难度,然后综合问了下腾讯一面二面类似的问题+一个最熟悉的项目

二面研发经理综合面试

综合聊了下熟悉的技术,遇到了最难的问题,讲解一下项目的流程和架构


想提升自己、获取优质资源,更多面试技巧和互推机会,欢迎加入我们的知识星球,长按下面二维码,或者点击「阅读原文」加入

欢迎加入我们的架构师社群

谢谢老板,点个 在看↓

极宝贵的BAT后端面经(含答案)相关推荐

  1. 2018最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)--转载

    版权声明:本文为转载文章,感谢博主小胖梅的博客,如有侵权,请联系我删除,谢谢 转载链接: https://blog.csdn.net/xm1037782843/article/details/8070 ...

  2. 2023最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)

    近期总结一一些面试题 都是企业的面试题笔记题 感觉薪资10k-15k的常见面试题 个人录制的最新Vue项目学习视频:B站 小胖梅-的个人空间_哔哩哔哩_Bilibili 红色为常见面试题 ====== ...

  3. 校招c语言面试题目及答案,C/C++学习之路(一)校招后端面试题及答案(作者回忆版)...

    1.结构体对齐的问题 数据在计算机中一般是以8字节的整数倍为一个存储单元来存储的,而结构体中包含的各种数据类型并不一样长,结构体的总大小可能是5字节或是7字节等等.计算机一次只能存取整数个存储单元的数 ...

  4. jquery级试题_腾讯2020前端面试题含答案解析

    程序猿的生活:打造全网web前端全栈资料库(总目录)看完学的更快,掌握的更加牢固,你值得拥有(持续更新)​zhuanlan.zhihu.com 1 在jquery 中想要找到所有元素的同辈元素,下面哪 ...

  5. 2021-最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)---手写代码篇

    ★★★ 手写代码:实现forEach map filter reduce ★★★ 手写实现一个简易的 Vue Reactive ★★★ 手写代码,监测数组变化,并返回数组长度 ★★★ 手写原生继承,并 ...

  6. php笔试题及答案网易,2020网易前端面试题含答案解析

    需要更多的面试题点击下面链接查看,有很多: 另外这是小编做的视频希望可以帮助到你: 『HTML+CSS』漂亮小姐姐教你制作暗黑破坏神网页开发:BV1C54y1X7ro 前端发展简史,功能以及未来趋势! ...

  7. 2021-最新Web前端经典面试试题及答案-史上最全前端面试题(含答案)---Vue篇

    ★★★ 如何使用原生 Node.js 操做 cookie? ★★ 什么是 Node.js?我们在哪里使用它? ★★ 为什么要使用 Node.js? ★★★ Node.js 有哪些特点? ★★★ set ...

  8. 史上最全前端面试题(含答案)-B篇

    面试有几点需要注意 面试题目: 根据你的等级和职位变化,入门级到专家级:范围↑.深度↑.方向↑. 题目类型: 技术视野.项目细节.理论知识型题,算法题,开放性题,案例题. 进行追问: 可以确保问到你开 ...

  9. web前端面试题(含答案)

    HTML+CSS 1.对WEB标准以及W3C的理解与认识 标签闭合.标签小写.不乱嵌套.提高搜索机器人搜索几率.使用外 链css和js脚本.结构行为表现的分离.文件下载与页面速度更快.内容能被更多的用 ...

  10. 应届生web前端面试题_史上最全前端面试题(含答案)

    2015-10-30 06:30:03 阅读( 385 ) HTML+CSS 1.对WEB标准以及W3C的理解与认识 标签闭合.标签小写.不乱嵌套.提高搜索机器人搜索几率.使用外 链css和js脚本. ...

最新文章

  1. 云监控服务产品优势与应用场景
  2. python3 正则表达式 嵌套表格_在Python中将嵌套结构与正则表达式匹配
  3. boost::units模块实现异构单元片段
  4. 50行代码串行Promise,koa洋葱模型原来这么有趣?
  5. javaweb实训第三天下午——Web基础-Servlet交互JSP原理及运用
  6. Linux中telnet命令
  7. 在mac中配置apache+php5.3+mysql的环境,修改hosts
  8. 如何保证Session值不丢失
  9. 90KB的3D游戏(像CS一样)[汇编界又一奇迹]绝对震撼,操作和CS一样!
  10. 基于wifi的物联网技术,主要有哪些优势?
  11. 项目时间和本地时间差8小时的问题
  12. vue的echarts的折线图、柱状图、折线图的使用
  13. tableau高级绘图(十二)-tableau绘制辐射堆叠图
  14. Bootstrap3部分理解
  15. 与卿共赴鸿蒙是什么意思,《山河令》看来周子舒是真的很爱温客行,君心似我心,此生无憾...
  16. 【karle 笔记】无法通过Windows功能控制面板自动安装或卸载Windows Server 角色和功能。
  17. 单个vue组件的打包和动态引入
  18. 点击按钮获取listview网上数据
  19. 给你的web页面添加盲水印,附带检盲水印方案
  20. matlab显示一幅图像

热门文章

  1. IAR模板--怎样在IARproject中创建和使用模板
  2. Ruby+watir自动化测试中实现识别验证码图片
  3. Vue.js-----轻量高效的MVVM框架(五、计算属性)
  4. 活灵活现用 Git --技巧篇
  5. 算法熟记-排序系列-归并排序
  6. 来告诉大家 AddressSanitizer: stack-buffer-overflow on address 一般都是代码哪里出现了问题
  7. 如何阻止 AcrobatPro DC自动更新升级?
  8. 苹果mac思维导图软件:mindmanager
  9. Recoverit for Mac(数据恢复软件)
  10. 如何从Mac删除Bing重定向