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


戳蓝字“CSDN云计算”关注我们哦!

640?wx_fmt=jpeg

作者 | 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天后收到短信,被拒

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

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

  3. 分布式要非常熟悉

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

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

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

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

640?wx_fmt=png

福利

扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


640?wx_fmt=jpeg


推荐阅读:

  • 屡试不爽的互联网架构三大马车!

  • 2019年技术盘点容器篇(四):来自京东云的技术问答 | 程序员硬核评测

  • 《长安十二时辰》科技梗揭秘!唐朝就能看到 5G 踪影?

  • 天才程序员: "开发 CryptoKitties 难不难? 只需掌握这3点..."

  • 教你如何用Python实现文本摘要模型(附教程)

  • 微软 CTO 韦青:5G 与亚里士多德

  • 什么限制了GNN的能力?首篇探究GNN普适性与局限性的论文出炉!


真香,朕在看了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云MaxCompute印度开服,加速大数据产业升级

摘要: 2018年1月18日,阿里云大数据计算服务MaxCompute将在印度正式开服。通过MaxCompute强大的计算能力,阿里云将加速印度大数据产业的全面升级。 点此查看原文:http://click.aliyun.com/m/40728/ 2018年1月18日,阿里云…

第14篇:Flowable-BPMN操作流程之任务完成

接上一篇: 第13篇: Flowable-BPMN操作流程之流程进展查看之流程图 https://blog.csdn.net/weixin_40816738/article/details/102902629 文章目录一、背景二、原理三、API3.1. 直接完成任务3.2. 完成任务并且设置任务参数四、实现4.1. 接口4.2. 接口实现4…

java垃圾回收 分代_Java分代垃圾回收策略原理详解

一、为什么要分代分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。在Java程序运行的过程中,会产生大量的对象,…

MaxCompute Studio使用心得系列6——一个工具完成整个Python UDF开发

摘要: 2017/12/20 北京云栖大会上阿里云MaxCompute发布了最新的功能Python UDF,万众期待的功能终于支持啦,我怎么能不一试为快,今天就分享如何通过Studio进行Python udf开发。 点此查看原文:http://click.aliyun.com/m…

如何填报大数据相关专业? | Alfred数据室

戳蓝字“CSDN云计算”关注我们哦!作者 | AlfredWu来源 | Alfred数据室高考出分了,又是一年一度各位考生和家长手忙脚乱开始填报志愿的时候了。很多考生和家长纷纷咨询Alfred:大数据现在不是很火吗?大数据专业怎么样呀&#xff1f…

第15篇: Flowable-BPMN操作流程之排他网关

接上一篇: 第14篇:Flowable-BPMN操作流程之任务完成 https://blog.csdn.net/weixin_40816738/article/details/102902647 文章目录一、背景二、定义三、流程准备四、流程文件五、控制器六、流程通过验证6.1. 创建新流程6.2. 启动流程6.3. 控制台查看任务…

阿里云视频AI全能力解读

摘要: 结合人工智能视频理解流程和用户的需求场景,我们将视频AI的功能分成四个大部分,视频智能审核、视频内容理解、视频智能编辑、视频版权保护。其中视频审核功能包括视频鉴黄、暴恐涉政识别、广告二维码识别、无意义直播识别等&#xff0c…

阿里云智能视频 AI 重装来袭

摘要: 近日,阿里云重磅推出视频点播新功能——视频AI ,基于深度学习、计算机视觉技术和海量数据,为广大用户提供多场景的视频AI服务。 点此查看原文:http://click.aliyun.com/m/40809/ 近日,阿里云重磅推出…

Hadoop精华问答 | Hadoop框架中最核心的设计是什么?

Hadoop能够进行大批量数据的离线处理,但是在实时计算上的表现实在是不尽如人意;而Storm就可以担当这部分的角色,今天,就让我们看看关于Storm的精华问答吧。1Q:hadoop发展史A:2Q:Hadoop 有哪些优点?A&#x…

SpringBoot2.x整合Swagger2 实现API文档实时生成

我们提供Restful接口的时候,API文档是尤为的重要,它承载着对接口的定义,描述等,本文主要介绍了SpringBoot集成Swagger2生成接口文档的方法示例,需要的朋友们下面随着小编来一起学习学习吧 我们提供Restful接口的时候&a…

阿里云 ESS 弹性伸缩服务新功能来袭,更全面、更自动化的使用体验

摘要: 2017年9月阿里云弹性伸缩服务伸缩配置新增了实例自定义数据、秘钥对、实例RAM角色、标签新特性;近日,阿里云又发布了VSWitchIds.N多可用区新特性。 点此查看原文:http://click.aliyun.com/m/40810/ 弹性伸缩是一种根据业务需…

java 提取轮廓_TensorFlow 卷积操作模拟sobel算子提取图像轮廓

注意:sobel算子不保证结果在0-255,需要做一次归一化处理,再乘以255输出的数据shape与图像的shape不一样,需要一次转化效果代码import matplotlib.pyplot as plt # plt 用于显示图片import matplotlib.image as mpimg # mpimg 用于…

阿里云MaxCompute(大数据)公开数据集---带你玩转人工智能

摘要: 目前阿里云大数据产品已经免费向全部用户开放了多种公用数据集。开放的数据类别包括:股票价格数据,房产信息,影视及其票房数据。 点此查看原文:http://click.aliyun.com/m/40813/ 目前阿里云MaxCompute大数据产品…

豪投10亿!华为放话:3年培养100万AI人才!网友神回应了

近期,AI测试权威软件AI Benchmark的测试数据显示,中国华为研发的7nm旗舰手机芯片麒麟810的AI分数,远远超过美国高通骁龙855了!麒麟810芯片AI分数是3300多,名列第一。而骁龙855手机则是2700多。大家振奋的同时&#xff…

阿里云大数据利器Maxcompute学习之-假如你使用过hive

摘要: 如果您是一个大数据开发工程师并且使用过hadoop的hive框架,那么恭喜您,阿里云的大数据计算服务-Maxcompute,您已经会了90%。这篇文章就来简单对比下Maxcompute和hive的异同,来方便刚开始使用Maxcompute的用户&am…

阿里云大数据利器Maxcompute-使用mapjoin优化查询

摘要: small is beautiful,small is powerful 点此查看原文:http://click.aliyun.com/m/40815/ 大数据计算服务(MaxCompute,原名 ODPS)是一种快速、完全托管的 GB/TB/PB 级数据仓库解决方案。 https://help…

GitHub下载文件时缓慢的问题

用记事本打开hosts文件,路径为 C:\Windows\System32\drivers\etc将下面3行添加到hosts文件中 140.82.114.3 github.com151.101.185.194 github.global.ssl.fastly.net192.30.253.121 codeload.github.com以管理员身份运行CMD,执行命令ipconfig /flushdn…

阿里云大数据利器之-RDS迁移到Maxcompute实现动态分区

摘要: 当前,很多用户的业务数据存放在传统关系型数据库上,例如阿里云的RDS,做业务读写操作。当数据量非常大的时候,此时传系关系型数据库会显得有些吃力,那么会经常有将mysql数据库的数据迁移到[大数据处理…

SaaS前世今生:老树开新花

戳蓝字“CSDN云计算”关注我们哦!作者 | 文东海出品 | CSDN云计算(ID:CSDNcould)2019年3月26日,Adobe和微软宣布,两家公司准备展开一项合作,来提升双方的“销售和营销软件”的能力,进…

初体验-阿里云短视频 SDK For Android 快速接入

摘要: 近期的一些创意短视频 App 风靡年轻群体,比较典型的例如抖音、MUSE 等,阿里云也适时地推出了简单易用的短视频 SDK,帮助开发者们以较低的成本快速引入功能完备的创意短视频功能。本文主要介绍如何快速接入阿里云短视频 SDK …