40K成功⼊职:六年开发终获⼩⽶Offer(附⾯经+⾯试题+答案
详解)
前⾔
从⾯试到现在已有⼀个多⽉了,⾯试的问题还记得⼋九成。端午节前刚从上家离职趁着假期有空把⾯试问题总结⼀下。主要是记录⼀下问题,答案三⾔两语写不完,⽹上有蛮多⽂章讲的挺好所以本⽂不再展开。
技术栈
java, golang, js, python 主要是前⾯两个。
跨省旅游最新政策⾯试总结
1. 其他Java团队leader⾯
2. 其他Golang团队leader⾯
3. 本团队leader⾯
4. 总监⾯
之所以把⾯试总结放前⾯是因为头⼀次写⽂章没经验下⾯排版太朴素了,怕⼤家看不下去所以先简单⼏句话概况。⾯试总共4⼩时,4轮。回忆了⼀下⼤概回答了90~95%左右,总体感觉还可以。给我的印象这⼏个⾯试官都很专业,问题质量也挺⾼,⼈也很nice。
这次⾯试像是照镜⼦知道了⾃⾝的不⾜,接下来还需扎实沉淀技术。加强算法能⼒。理解源码。努⼒不负每次机会。
2年前从sz回到wh 然后才感受到sz的好。属于后知后觉类型。看着以前⽤友的同事们⼀个个跳的都挺棒(阿⾥、腾讯、阿⾥、百度、京东、美团、⽹易等等)⾃⼰再看下⾃⼰感觉在荒野求⽣。
没啥爱好这⼏年除了玩玩游戏就是看看技术,也没考虑过⼈⽣追求,但是最近半年思考了⼀下⼈⽣突然知道了⾃⼰想要什么(都⼆⼗⼋九岁马上奔三了这也太后知后觉了)
统计下数据算个帐
19年wh 投了50+ ⾯了4个 拿到2个。。⼤部分是不回复。
17年wh 投了10多个 ⾯了7个 拿到4个。(后来某种原因拒绝了讯飞的offer、选择了某公司)
12~16年sz 数据不记得了。虽然⾃⼰是个弱鸡但是感觉⼯作挺好。(16年⽤友)
所以19年wh真是神奇,我⼀度怀疑是简历太⽔了,发给sz、hz朋友看他们说还好啊没问题。难道是特朗普贸易战搞的招聘困难?【微笑】
本⽂标题怎讲
讲个真实的笑话,前⼀阵⼦在wh⾯⼀家⼩公司架构师职位 场景:4个⼈同时⾯我,⼀个⼤桌⼦,总经理办公室总经理:你要不要做销售啊 以前做过销售吗?
我:尴尬的说做销售太难了我没这个能⼒。(【⿊⼈问号】为啥⼀开始就跟我聊这个,难道我看起来这么没有技术含量?我投了⼏⼗个简历了兴奋的来这⾥你跟我说这?这对的起我认真的态度吗?)
总经理:哦!你公司做硬件产品的啊!(我简历⾥有写NLP机器⼈项⽬)
我:“这是个软件产品”(what the f**k,⼤哥哥你对我有严重的误解。)
总经理:那就让技术总监来⾯⼀下吧(估计是让他没⾯⼦了)
开始技术⾯
他: 介绍⼀下你做的项⽬php网站设计开发工程师招聘
我: 介绍某个项⽬的背景,说了下项⽬是⼲啥⽤的,简单提了⼀下技术栈 ⼤概5~6分钟 因为要互动所以不能⼀个⼈说太久
他:GRPC是⼲什么⽤的,你们为什么不⽤http restful来做呢
divide and conquer我:远程调⽤ 基于http2 有4中调⽤⽅式 序列化协议采⽤protobuf(⼼⾥想这么多内容了你⼀个个的问吧)
他:好的,我技术⾯完了
总经理补了⼏句总结性的客套话 ⾯试结束
【WTF 这就结束了?】这才15分钟不到?我就这样被淘汰了?嗯是的【微笑】
ok 综上所述 抱着终于得到了⼀次技术⾯的⼼情写下这个题⽬。
⼀⾯ Java
主要是Java基础 框架原理
1. 详述线程池构造⽅法有哪些各有什么⽤、ctl、allowCoreThreadTimeOut变量的作⽤,初始化阶段、⼤量提交任务阶段、执⾏完所有
任务阶段这写过程。(addWorker过程和其它部分回答得不错 runWorker getTask的⼀些细节回答的不好。线程池是Java躲不开的问题 ⽹上有很多答案不再细说。)
2. HashMap数据结构,resize过程,如果多线程去操作会出现哪些问题,1.7和1.8有什么变化,既然提到了红⿊树那么来聊聊它和
BST、AVL各⾃有啥特点有啥区别,说⼀下平衡过程(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吧,BIO、NIO,IO模型,jvm怎样实现NIO的呢(ok。还好之前略看了⼀下JVM这⼀块的c c++代码。多路复⽤ ⾮阻塞之类的
就不细说了。说⼏个关键点,IO模型参照《unix⽹络编程》。select、poll、epoll。fcntl)
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,靠得住的it编程培训机构
说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好⽤)
mysql面试题及讲解10. 遇到过哪些坑(使⽤etcd过程中遇到的坑,使⽤不当造成的协程泄露以及如何避免的,watch、lease、空间压缩、等)
11. 使⽤golang你印象深刻的是啥(协程,chan、select这是绝壁是巨好⽤的,defer,panic&reverse)
12. golang编码规范、⽇志规范(这⾥要提⼀句规范很重要,架构演进的时候做重构深有体会,然⽽并没有很统⼀的规范像Java阿⾥规范
那种,对于分包官⽅并没有给出⼀个推荐的⽬录划分⽅式 所以google然后根据⾃⾝体会制定了⼀个团队内部规范 后来发现掘⾦有⼀篇⽂章有所共鸣并严重赞同 /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
这两年的经历⼀句话概括。
对就是这样,不要看轻⼀个⼈。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。