可贵的一次技术面——终得小米offer

前言

从面试到如今已有一个多月了,面试的问题还记得八九成。端午节前刚从上家离职趁着假期有空把面试问题总结一下。主要是记录一下问题,答案三言两语写不完,网上有蛮多文章讲的挺好因此本文再也不展开。java

技术栈

java, golang, js, python 主要是前面两个。python

面试总结

  1. 其余Java团队leader面
  2. 其余Golang团队leader面
  3. 本团队leader面
  4. 总监面

之因此把面试总结放前面是由于头一次写文章没经验下面排版太朴素了,怕你们看不下去因此先简单几句话概况。面试总共4小时,4轮。回忆了一下大概回答了90~95%左右,整体感受还能够。给个人印象这几个面试官都很专业,问题质量也挺高,人也很nice。mysql

此次面试像是照镜子知道了自身的不足,接下来还需扎实沉淀技术。增强算法能力。理解源码。努力不负每次机会c++

2年前从sz回到wh 而后才感觉到sz的好。属于后知后觉类型。看着之前用友的同事们一个个跳的都挺棒(阿里、腾讯、阿里、百度、京东、美团、网易等等)本身再看下本身感受在荒野求生git

没啥爱好这几年除了玩玩游戏就是看看技术,也没考虑过人生追求,可是最近半年思考了一下人生忽然知道了本身想要什么(都二十八九岁立刻奔三了这也太后知后觉了)github

统计下数据算个账golang

19年wh 投了50+ 面了4个 拿到2个。。大部分是不回复。面试

17年wh 投了10多个 面了7个 拿到4个。(后来某种缘由拒绝了讯飞的offer、选择了某公司)redis

12~16年sz 数据不记得了。虽然本身是个弱鸡可是感受工做挺好找。(16年用友)算法

因此19年wh真是神奇,我一度怀疑是简历太水了,发给sz、hz朋友看他们说还好啊没问题。难道是特朗普贸易战搞的招聘困难?【微笑】

本文标题怎讲

讲个真实的笑话,前一阵子在wh面一家小公司架构师职位 场景:4我的同时面我,一个大桌子,总经理办公室

总经理:你要不要作销售啊 之前作过销售吗?

我:尴尬的说作销售太难了我没这个能力。(【黑人问号】为啥一开始就跟我聊这个,难道我看起来这么没有技术含量?我投了几十个简历了兴奋的来这里你跟我说这?这对的起我认真的态度吗?)

总经理:哦!你公司作硬件产品的啊!(我简历里有写NLP机器人项目)

我:“这是个软件产品”(what the f**k,大哥哥你对我有严重的误解。)

总经理:那就让技术总监来面一下吧(估计是让他没面子了)

开始技术面

他: 介绍一下你作的项目

我: 介绍某个项目的背景,说了下项目是干啥用的,简单提了一下技术栈 大概5~6分钟 由于要互动因此不能一我的说过久

他:GRPC是干什么用的,大家为何不用http restful来作呢

我:远程调用 基于http2 有4中调用方式 序列化协议采用protobuf(内心想这么多内容了你一个个的问吧)

他:好的,我技术面完了

总经理补了几句总结性的客套话 面试结束

【WTF 这就结束了?】这才15分钟不到?我就这样被淘汰了?嗯是的【微笑】

ok 综上所述 抱着终于获得了一次技术面的心情写下这个题目。

一面 Java

主要是Java基础 框架原理

  1. 详述线程池构造方法有哪些各有什么用、ctlallowCoreThreadTimeOut变量的做用,初始化阶段、大量提交任务阶段、执行完全部任务阶段这写过程。(addWorker过程和其它部分回答得不错 runWorker getTask的一些细节回答的很差。线程池是Java躲不开的问题 网上有不少答案再也不细说。)
  2. HashMap数据结构,resize过程,若是多线程去操做会出现哪些问题,1.7和1.8有什么变化,既然提到了红黑树那么来聊聊它和BSTAVL各自有啥特色有啥区别,说一下平衡过程(ok。这个是基础内容网上一大把答案再也不细说)
  3. 接下来聊聊concurrenthashmap怎样保证线程安全的1.7和1.8区别(ok)
  4. 线程有几种状态,sleep wait 区别(ok)
  5. synchronized Lock区别,synchronized工做原理对象头、JVM中锁的优化,再聊聊并发包的AQS、公平锁非公平锁 读写锁、CAS和底层的unsafe(ok)
  6. JVM内存结构,堆的内存结构哪些是线程共享的呢,使用过javap命令吗结合这个命令你个谈谈对JVM内存各个区的理解。调优相关。(ok)
  7. 聊一下GC可达性分析算法、哪些对象能够做为GC ROOT,根据新生代老年代特色的不一样来讲一下他们适合使用哪些垃圾回收算法。对比一下标记清除标记整理。(ok)
  8. 类加载器双亲委派安全沙箱机制(ok)
  9. 聊聊IO吧,BIONIOIO模型,jvm怎样实现NIO的呢(ok。还好以前略看了一下JVM这一块的c c++代码。多路复用 非阻塞之类的就不细说了。说几个关键点,IO模型参照《unix网络编程》。selectpollepollfcntl
  10. 巴拉巴拉聊项目牵扯出一堆问题 一致性hash算法、分布式事物、Service Mesh实践、rabbitmq(基本ok)
  11. TCP滑动窗口 ACK机制。(ok)
  12. zuul、hystrix、feign工做原理,springmvc工做原理(ok)
  13. 举例说明spring中使用到的设计模式(ok,掘金有这个文章)
  14. git使用规范、gitflow(ok)
  15. dubbo 相关问题(ok)

二面 golang

  1. Golang 的并发模型(回答的通常 M、P、G)
  2. 聊聊gin源码 路由、group、middleware &设计模式(路由的实现用到了前缀树这个回答得很差 ,其它ok)
  3. grpc4种调用方式,你看过grpc golang版源码 client --> server这个过程你讲一下。protobuf协议 GRPC 性能优化,http2 (ok,这个印象深入在上家公司时候还作过度享)
  4. cap原理,注册中心选型AP or CP。
  5. etcd是CAP的哪一种?etcd数据一致性算法是?详述raft协议,发生分区隔离以后会怎样,隔离恢复以后怎样保证数据一致性?(ok,说raft以前先说了一下Paxos 后来引出了Raft 对比一下,而后开始讲raft各类状况 极力推荐去这里看看 raft.github.io/)
  6. 你说看过源码那聊一下gomicro吧(说了一下各类组件每种适合作什么事,讲了一下咱们的项目中微服务用到了哪些,上家公司gomicro技术栈是我推进的因此这里回答得还能够。)
  7. 聊一下大家没有采用gomicro的时候大家的微服务是怎样实践的(注册中心发现用的etcd,lease续期、服务降级、限流、熔断、缓存、一致性hash等负载均衡策略实现,GRPC,golang版rabbitmq客户端&断网重连。不像spring cloud或gomicro不少现成的能够用这些都是手撸 固然这是个人团队共同完成的,这过程当中收获蛮多因此不要排斥学习另外一门语言或者技术栈 每每会对本身打开一扇窗)
  8. golang压测pprof,火焰图,结合项目讲一下架构推演 性能提高点(OK)
  9. 大家项目结构和依赖管理(OK,这里不得不吐槽一下 godep、glide真的不如maven好用)
  10. 遇到过哪些坑(使用etcd过程当中遇到的坑,使用不当形成的协程泄露以及如何避免的,watch、lease、空间压缩、等)
  11. 使用golang你印象深入的是啥(协程,chan、select这是绝壁是巨好用的,defer,panic&reverse)
  12. golang编码规范、日志规范(这里要提一句规范很重要,架构演进的时候作重构深有体会,然而并无很统一的规范像Java阿里规范那种,对于分包官方并无给出一个推荐的目录划分方式 因此google而后根据自身体会制定了一个团队内部规范 后来发现掘金有一篇文章有所共鸣并严重赞同 draveness.me/golang-101 日志框架并无Java直接采用slf4j 下面用 log4j2或logback那么果断,选之又选决定用logrus,团队的QL同窗根据需求定制了)

三面 综合

  1. kafka工做原理、零拷贝、分组协调器工做原理、offset相关问题
  2. 链路追踪 SkyWalking、zipkin 各自特色和实现原理,Java探针
  3. mysql 锁、索引、事务,大数据量优化 分表分库方案
  4. redis线程模型 skiplist ziplist数据结构,持久化方案 rdb快照备份的过程(copy-on-write这个回答的很差 我只知道Java的copyonwrite ,Linux fork进程具体操做不清楚)。淘汰策略,缓存穿透 大规模失效解决方案
  5. 手写代码算法题 假设有两种操做符*和- *表明×2 -表明减一,给你两个数 a,b 要求计算出从a通过这两种运算获得b最少多少步 (ok,算法不是我强项,这题刷算法的时候也没作过还好给的比较简单,大概10多秒有思路 几分钟写了一下不太完整 让我讲了讲思路 使用二叉树去作)
  6. 聊一聊感兴趣的技术 将来发展方向(技术方面)

四面 总监

不详述了 就是如下这些问题

职业规划、为何跳槽、兴趣爱好、了解一下性格、自我评价上一份工做经历等,我也问了一些问题互动了一下。

面试结束,回去等HR通知。

最终拿到offer

这两年的经历一句话归纳。

对就是这样,不要看轻一我的。

最后祝团队剩下的小伙伴猥琐发育。

相关文章
相关标签/搜索