关于java:蚂蚁金服6面成功唬住面试官拿了36K突然感觉Java面试貌似不太难

36次阅读

共计 4149 个字符,预计需要花费 11 分钟才能阅读完成。

蚂蚁金服 - 面试前

蚂蚁的面试挺独特,每轮面试都没有 HR 约工夫,个别是早晨 8 点左右面试官来一个电话,问是否能面试,能的话开始面,不能就约一个其它工夫。

全程 6 面,前五面技术面,电话面试,最初一面是 HR 面,现场面。大佬说技术这方面必定要把握好,其实面试题也能够背一背,要是他提前有工夫就看一下面试题说不定有些问题就能够答复得更好,能够起个抱佛脚的作用。

一面

  • 介绍一下本人
  • 问我的项目经验, 聊 ” 数据同步 ”
  • 接着聊上了 K8S 的我的项目
  • 有没有什么钻研得比拟深得技术?(大佬:kubernetes, golang, prometheus, java)
  • kubernetes 的架构是怎么样的?
  • 这个问题很大,拆成 apiserver、controller、kubelet、scheduler 讲了一下
  • golang 与 java 的比拟
  • 这个问题又很大,过后次要比照了 vm、协程反对、面向对象和泛型的区别、以及本人对各自应用场景的一些了解
  • golang 的 GC 算法
  • 晓得是三色标记,不过细节说不上来
  • 从有限的字符流中, 随机选出 10 个字符
  • 没见过也没想进去,查了一下是蓄水池采样算法,经典面试题,没刷题吃亏了
  • 怎么扩大 kubernetes scheduler, 让它能 handle 大规模的节点调度
  • 单节点提速:优选阶段随机取局部节点进行优选;程度扩大 scheduler 节点,pod 做一致性 hash 来决定由哪个 scheduler 调度
  • 你有什么想问我的?

一面其实有点僵,大佬本人齐全没放开,面试官对大佬的答复没有什么反馈和深刻,都是 ” 哦好的 ” 而后就过了。所以大佬过后面完感觉本人其实曾经挂了(要是对候选人不感兴趣,有时候也就问完问题走个过场溜了),起初收到二面电话着实吃惊了一下。

二面

  • 先聊了聊我的项目
  • 给 Prometheus 做了哪些改变?
  • 自研配置核心, 具体做了哪些内容?
  • 有用过 MySQL 的什么高级个性吗?
  • 这里不太了解,我问什么算高级个性,面试官就切换到了下一个问题
  • 配置核心的外围数据表是怎么设计的?
  • 为什么在业务里用 Redis, Redis 有什么长处?
  • 单线程:并发平安;高性能;原语与数据结构丰盛;采纳宽泛,踩坑成本低
  • 对 Redis 里数据结构的实现相熟吗?
  • 说了一个 zset 跳表
  • 用过 Redis 的哪些数据结构, 别离用在什么场景?
  • Java 初始化一个线程池有哪些参数能够配置, 别离是什么作用?
  • 本人写的 Java 利用调优过哪些 JVM 参数, 为什么这么调优?(这个问住了,大佬只晓得最大堆最小堆,开 G1,开 GC 日志以及 OOM dumper 这些根本的)
  • 用 Jetty 的时候有没有配什么参数, 为什么这么配?
  • Jetty QTP 期待队列配置成有限的话, 你感觉好吗? 会有什么问题吗?
  • 用过 Linux Bash 里的哪些命令, 别离用它们干嘛?
  • 一道口试题: 须要在给的链接中作答, 不能 google, 不能跳出, 不能用 IDE:

题目是这样的:
启动两个线程, 一个输入 1,3,5,7…99, 另一个输入 2,4,6,8…100 最初 STDOUT 中按序输入 1,2,3,4,5…100
大佬:用 Go 实现吧 面试官:不能够,用 Java 的 notify 机制实现 大佬::(还没意识到问题的严厉) 那用 Java BlockingQueue 面试官:说不能够, 要求用 Java 的 wait + notify 机制来实现
因为齐全没写过 wait + notify,只能示意不会, 面试官说那行吧你能够用 go 写
最初用 go channel 实现了一版, 不过给的网页上不能运行代码,也不晓得写得对不对,而后面试完结。
这一轮面试官连续了一面的格调,问完一题就赶紧下一题了,仿佛没有体现出对我的答复有趣味或认可。因而这轮面完,他感觉本人可能又挂了…

三面

  • 仍然先聊我的项目
  • 对监控警报的我的项目很感兴趣, 问了挺多细节,。最初问了一个问题::当初要你实现一个语义不弱于 PromQL 的查询语言, 你能实现吗?(这里尽管看过一些 Prometheus 的代码,但其实对 PromQL 的 lexer 和 parser 局部没有细看,还好之前因为数据同步我的项目里想写申明式 Stream SQL 钻研过一点 ANTLR,用 ANTLR 写语法 + AST 遍历塞查问逻辑给糊弄过来了。)
  • 感觉做得最深刻的我的项目是什么(当然是数据同步)
  • 聊数据同步我的项目
  • 问 Linux 把握得怎么样?(没有零碎学习过,基本上是本人运维踩坑积攒的)
  • 问 Golang 把握得怎么样?(用了半年, 看过 effective go)
  • 问算法把握得怎么样?(到图为止都能够)
  • 问最短路算法(只记得 dijkstra 了,形容了代码流程)
  • k8s 把握得怎么样?(没有本人写过 controller 和 scheduler,然而对概念都很相熟,看过 xxx 这几局部的源码)
  • k8s 的 exec 是怎么实现的?(这个问题正中下怀,之前写了 PinGCAP 的小作业正好对这块特地相熟)

这轮聊得顺畅多了。同时发现蚂蚁的面试官仿佛挺喜爱让你本人评估:“你感觉本人 xxx 把握得怎么样?”(只有五位面试官,样本不够大,不能作数哦),这类问题其实我慌得要死,怕吹过头了答不上来,面试挂了事小,丢了体面事大。早晓得就预习一下怎么吹牛了。

四面

  • 介绍一下本人
  • 感觉本人基础知识把握怎么样
  • 平时个别会用到哪些数据结构?
  • 链表和数组相比, 有什么优劣?
  • 如何判断两个无环单链表有没有交叉点
  • 如何判断两个有环单链表有没有交叉点
  • 如何判断一个单链表有没有环, 并找出入环点
  • TCP 和 UDP 有什么区别?
  • 形容一下 TCP 四次挥手的过程中
  • TCP 有哪些状态
  • TCP 的 LISTEN 状态是什么
  • TCP 的 CLOSE_WAIT 状态是什么
  • 建设一个 socket 连贯要通过哪些步骤
  • 常见的 HTTP 状态码有哪些
  • 301 和 302 有什么区别
  • 504 和 500 有什么区别
  • HTTPS 和 HTTP 有什么区别
  • 写一个算法题: 手写快排

这一轮全程问的基础知识,根底扎实的话就没问题了,不过大佬感觉有一点像校招的问法。

五面

  • 介绍一下本人
  • 在 k8s 上做过哪些二次开发?
  • 本人用 Helm 构建过 chart 吗?有哪些?
  • 有没有思考过本人封装一个面向研发的 PaaS 平台?
  • 配置核心做了什么?
  • 为什么不必 zookeeper?
  • 配置核心如何保障一致性?
  • Spring 里用了单例 Bean, 怎么保障拜访 Bean 字段时的并发平安?
  • 用并发平安的数据结构,比方 ConcurrentHashMap;或者加互斥锁
  • 如果我还想隔离两个线程的数据, 怎么办?
  • ThreadLocal,而后举了个例子
  • Golang 里的逃逸剖析是什么?怎么防止内存逃逸?
  • 这个不晓得,认怂了
  • 比照一下 Golang 和 Java 的 GC
  • 答了一下 CMS、G1 和三色标记,我比照的点是 JVM 有分代回收,Go 的 Runtime 没有,没能深刻地讲
  • Golang 的 GC 触发机会是什么
  • 阈值触发;被动触发;两分钟定时触发;
  • 有没有写过 k8s 的 Operator 或 Controller?(大佬:没有写过)
  • 谈一谈你对微服务架构的了解
  • 大体思路 ” 微服务实质是人员组织架构演进与关注点拆散 ”
  • 谈一谈你对 Serveless 的了解
  • 大体思路 ”Serveless 是继 docker 与容器编排之后的又一次利用开发与基础设施提供方之间的边界划分 ”
  • 你认为 Serveless 是将来吗? 为什么?
  • 大体思路 ” 是云服务的将来,把蛋糕从企业的 IT、运维与中间件部门切走,造成规模效应,做得越多赚得越多;公司内的话 servless 可能帮忙减速前台业务迭代,但对中后盾的收益还看不到,将来可能会有比 servless 更适宜中后盾的架构 ”

面试官:最初你有什么要问我的?
大佬:为什么足足安顿了五轮技术面,而且其中有两轮仿佛和 k8s 没有关系啊?
面试官:咱们感觉你做过的货色挺多的,各个方向都想让你尝试一下
我:那这轮是最初一轮技术面吗?
面试官:不肯定
后续还问了面试官一些业务相干的问题,就不赘述了
五面最初的三个吹水问题大佬说还挺感兴趣,惋惜面试官只是听他讲,没有跟他探讨。还有就是问了面试官才晓得,二面四面的面试官是 PaaS 平台那边的,因而次要问 Java 没有波及到 k8s 和 go。

六面(HR 面)

之前据说过阿里系的 HR 是来 ” 闻滋味的 ”(看你是否适宜阿里的格调),而且有一票否决权。所以还是挺有压力的。

  • 问经验
  • 为什么要思考进去看看呢?
  • 金句:“当初本人的技术成长有点碰到瓶颈,加上始终对您公司钦慕有加 relaxed””
  • 当初公司的主营业务是什么?(这块往技术上问了很多,感觉是想考查我解释简单问题的能力)
  • 当初带人吗?report 层级是怎么的?
  • 对本人这几年的经验称心吗?
  • 感觉本人有什么毛病?
  • 碰到过什么很挫败的事件吗?
  • 将来的职业规划是怎么的?
  • 看机会的时候,次要思考的是待遇、平台、人员还是什么其余因素?
  • 当初的待遇如何
  • 有什么想问我的?
    整体聊了 40 多分钟,话题挺广的,面试官也说了系统部这边压力挺大的,优良的人才能力留下来。
    大佬感觉 HR 面里除了谈薪酬的局部没有什么可筹备的,想说什么直说就行。因为到了 HR 面至多证实你的技术没什么问题,直说进去不便 HR 判断两边的价值观是否合拍,如果真的不合拍,那其实在 HR 这一面挂了比起进去之后再悔恨又跳槽要好很多,毕竟大家都不喜爱频繁跳槽的简历。

小结

完预先问了一些主观评估:

  • 面试难度:失常
  • 面试体验:还不错,感觉没这么难。(反正我是酸了)
  • 问题偏差:基础知识,开发常识,技术见解

当然除了这些 , 还有一部分很漂亮的学习材料,总结得很全面的,蕴含了 29 个知识点,从根底到进阶都有了!篇幅限度就展现了局部内容,须要完整版的小伙伴能够点击这里即可获取到文章中的文档!

最初提供的 Java 架构学习材料,蕴含有:架构筑基、开源框架、分布式、微服务、高并发、网络等等,click here 等等

Java 架构进阶之架构筑基篇(Java 根底 + 并发编程 +JVM+MySQL+Tomcat+ 网络 + 数据结构与算法)



Java 架构进阶之开源框架篇(设计模式 +Spring+SpringMVC+MyBatis)



Java 架构进阶之分布式架构篇(限流(ZK/Nginx)+ 缓存(Redis/MongoDB/Memcached)+ 通信(MQ/kafka))


![file](/img/bVcV3Pf)

Java 架构进阶之微服务架构篇(RPC+SpringBoot+SprinGCloud+Dubbo+K8s)

总结

只有充沛地筹备好了面试,才能够更有自信地吊打面试官,每方面的常识都是必须的,不能不足的。

须要完整版的小伙伴能够点击这里

正文完
 0