三面鹅厂,何以被虐的体无完肤....

2024-09-02 10:38

本文主要是介绍三面鹅厂,何以被虐的体无完肤....,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方“朱小厮的博客”,选择“设为星标

回复”1024“获取独家整理的学习资料


640

来源:http://t.cn/EqlZT9n


最近有几个小伙伴私聊问我关于面试的事情,聊了一些东西,促使我今天分享这篇关于面试的文章,希望能够对感兴趣的人有所帮助。


很多人都想进大厂,也都知道进大厂很难很难,而且面试周期也长(笔试、初试、复试、终试)。今天给大家带来codegoose的三面鹅厂的经历,希望对大家有所帮助,有所借鉴!!



















经过半年的沉淀,加上对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天后收到短信,被拒

总结:
  1. tcp/udp,http和https还有网络这块(各种网络模型,已经select,poll和epoll)一定要非常熟悉「大厂对基础的要求还是非常高的,所以基础很重要」。

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

  3. 分布式要非常熟悉进大厂必备的技能啊

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

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

  6. 系统设计,思路,思路,思路,一定要思路清晰,一定要总结下系统设计的流程说明一定要有自己的独特的见解与想法

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




今天就不贴自己的公众号二维码了。 今天分享一个Flink的公众号。 这个公众号是「Flink官方」运营的。 受Flink官方运营所托,友情推广一下他们的公众号,感兴趣的朋友可以关注一波。

公众号名称:Ververica。Apache Flink 社区公众号,由 Apache Flink Community China 运营管理,旨在联合国内的 Flink 大 V,向国内宣传和普及 Flink 相关的技术。公众号将持续输出 Flink 最新社区动态、入门教程、Meetup 资讯、应用案例以及源码解析等内容,希望联合社区同学一起推动国内大数据技术发展。


640?wx_fmt=jpeg


点个 "在看" 呗^_^

这篇关于三面鹅厂,何以被虐的体无完肤....的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1129731

相关文章

被审稿人批得体无完肤?参考文献这样引用就对了!

我是娜姐 @迪娜学姐 ,一个SCI医学期刊编辑,探索用AI工具提效论文写作和发表。 审稿人对参考文献引用提出质疑,在comments中还挺常见的。一般来说,是最新的、相关的、重要的文献引用缺失。此外,如果仔细分析引文来源,娜姐还发现有些常见问题: 1 引用不全面。 比如,声称某药物有ABCD四个功能,但是引文只证明了ABC三个功能。 2 引用不准确。 引文中上升趋势是25%,但是你

【面试经验】字节 大模型算法 一二三面 面经

字节效率真高 一面 拷打论文 transformer和llama的LN有什么区别,手写RMSNorm FFN有什么不同,写Relu和SwiGLU 数据清洗流程 质量过滤用什么模型 PPL公式是什么 BERT的预训练任务、embedding 讲讲位置编码 你认为好的prompt的范式是什么 开放性问题:端到端的大模型和多个小模型,各自的优缺点是什么 手撕:两道easy 当天约面 二面 拷打论文

无搏,何以赛

无搏,何以赛    ---赛搏信息03期   初识赛搏是一场意外。招聘网站上的一则招聘信息无意中引起我的注意,“赛搏”首先在脑海里浮现出的是一幅百舸争流,千帆竞技的壮阔画面,昭显了年轻互联网公司的蓬勃朝气。“长城”则象征了固若金汤,安如磐石的可靠安全性能。正是这样的赛搏精神,深深的触动了我,也注定我与赛搏有一场邂逅。   结识赛搏是一次尝试。在我穿过一个高速桥,走过两个地下通道,问过N个

港硕上岸鹅厂算法岗,谈谈感受和心得!

节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、算法项目落地经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 总结链接如下: 《大模型面试宝典》(2024版) 发布! 喜欢本文记得收藏、关注、点赞。更多实战和面试交流,文末加入我们 不知不觉间,我已经在鹅厂实习将近一个月了

阿里三面:Redis大key怎么处理?

阿里三面:Redis大key怎么处理? 一、什么是大key? 首先大key不是key很大而是key对应的value值很大,一般而言如果String类型值大于10KB,Hash,Set,Zset,List类型的元素的个数大于5000个都可以称之为大key。 本文已收录到Java面试网站 二、大key的危害 客户端超时等待:由于Redis执行命令是单线程处理,然后在操作大key时会比较

3天13部,端午档电影数何以是五一档2倍?

离端午还有12天,院线端午档再上热搜。 截止至5月29日,本次端午档将有13部电影在3天的节假日内集中上映,这一数量仅比2021年端午档的最高纪录少了2部,几乎是今年五一档期上映影片数量(7部)的两倍。 并且与2021年端午档期不同,当年的影片拥挤主要源于疫情期间的影片积压,众多公司急于通过去库存来换取现金流,导致当年端午档头部电影稀缺,由小成本电影、翻拍电影和重映电影占据市场。 然

ERP产品一体化、智能化发展加速,智邦国际何以赢得先机?

近年,随着全球经济环境的剧烈变动,市场竞争的硝烟愈发浓烈。受大环境影响,百行千企在发展过程中,力求降低成本、增长效率,以增加自身竞争力。需求与市场并存,为激发更多潜在力量,越来越多的企业开始正视数字化转型这一崭新课题。数字化、智能化无疑是当下能够为企业降本增效的最佳答案。 对于诸多企业来讲,“数字化”这个词汇并不陌生,但如何实现转型,完成企业突破式发展,仍旧缺乏着力点。多数传统企业,在数字化转型

小红书java社招一二三面面经

面试前,先找面经哥,点击此处查看更多面经 面试公司:小红书 面试职位:后端开发工程师 整体评价:已拿offer 📝面试题: 【一面】 讲一下MySQL优化 1、索引优化的细节 2、前缀索引原理 3、MySQL是如何选择合适的索引的,如where里用到字段a,表中有索引a和(a,b) 4、覆盖索引原理 5、如何知道覆盖索引是否生效 异步的理解 1、如果同时有3个耗时操作A、B、C

苏州金龙何以成为塞尔维亚中国客车第一品牌?研发向上服务助力!

5月7日至8日,一场举世瞩目的会晤在塞尔维亚举行。作为塞尔维亚中国客车第一品牌,苏州金龙海格客车也为当地民众绿色公共出行提供了“中国力量”。 目前,苏州金龙海格客车在塞尔维亚保有量近200台,是在塞尔维亚保有量最大的中国客车品牌。要保证大批量的公交车正常运营,售后服务至关重要。自2004年以来,苏州金龙坚定实施国际化战略,努力布局“属地化人才”策略,海外市场服务加快“走出去,请进来”步伐,持

可编程 IP 新星 Story Protocol 何以引领链上文艺复兴浪潮?

当前,随着 Web3 行业发展进入全新阶段,与生成式人工智能(AIGC)技术融合正在创造潜力新星项目。也是目前的互联网生态下,任何普通民众都有权利创作高质量的音乐、艺术、散文和视频内容,带来了用户生成内容(UGC)的新浪潮。尽管去中心化分布式系统和人工智能工具仍在努力保护和发展创作者的作品,但知识产权纠纷不绝于耳。 与网络快速发展相悖的是,知识产权仍陷于中世纪时期孤立、不透明和静止的状态