【面经】- 蔚来JAVA&大数据面经分享01

1年前 (2023) 程序员胖胖胖虎阿
166 0 0

也许有一天
太空的遨游使我疲倦
在一个五月燃着火焰的黄昏
我醒了
海也醒了

前言

大家好,我是普帝。
今天给大家分享下蔚来4面面经,以及流程。
面试时间为今年四五月份(正好也是疫情高峰),面试过程历经一个月。
岗位为:大数据方向-数据治理团队-资深JAVA岗 (目前已停止招聘,所以暂时找不到JD)
渠道:BOSS内推
面试轮数:正常轮数技术面3轮+HRBP面
非白嫖党,记录如下:
【面经】- 蔚来JAVA&大数据面经分享01

面试方式

由于当时正好是疫情高峰,都是居家隔离状态,视频面试的方式为使用飞书会议进行面试

Q1: 面试官是否开视频?

A1: 会开

Q2: 算法题如何考?

A2: 算法题几乎为Leetcode原题,但面试官会很有兴致跟你一块探讨性能与其他更好的方式,
算法题目会通过飞书一个类似小程序的会话窗口发给你,然后你在里面答题,答题的过程会实时同步到考官那边。

PS: 算法的答题界面类似leetcode界面

由于已经过去2个月,所以具体的细节不太记得,我写个大概吧,也差不多了。

一面

开篇:
PS面试过程了解面试官的技术背景是非常重要的, 由于我也不太清楚我是投递到JAVA岗那边还是大数据那边,所以我先行咨询了下面试官我此次面的岗位以及他们是啥业务线团队,得到的信息是他们是数据治理团队,目前是招资深JAVA,主要做底层二次开发以及工具/中间件封装等工作,业务有数据治理这块东西,面试官自己是擅长JAVA领域。

自我介绍

正常介绍即可,重点表达出你的过去的技术产出(注意量化指标)以及你擅长的技术&业务领域

讲下你最熟或者最难的一个项目(20min左右)

xxxx巴拉巴拉,项目其实很多,由于面试官是java方向,所以我祭出了之前做过的自研分布式调度系统项目,从需求背景,产品选型,架构设计,技术难点(分布式事务;选主;高并发;failover; 故障恢复;多线程分配以及优先级任务队列的设计等等),目前的不足,当前业界产品等等与面试官进行了相关的交流。
由于面试官没做过调度这块的产品,所以第一面这个项目偏向调度的这块也没继续深入展开扳扯

讲下AQS(15min左右)

讲完项目后,面试官回到简历技能这块进行面试。
面试官选了我技能项里精通的技能点:AQS
这一块的答法,如果你没做过总结与思考肯定会比较混乱,面试回答注意好面试官本质到底要考察的是啥,以及你回答的层次感。
做过总结或者当过面试官的一定会知道,问AQS主要还是考察:

  1. 【应用层面】上的LOCK与Synchronization区别以及使用场景;
  2. 【JUC锁的实现】基于LOCK接口和AQS底层实现的几个JUC包里的锁的实现逻辑以及使用场景
  3. 【AQS底层】数据结构;队列的设计;如何阻塞与唤醒;排它与共享模式;自旋;监控等等
  4. 【使用经验】项目使用的场景以及遇到的问题
  5. 【系统底层】系统锁的实现 这块就涉及JVM提供的Unsafe接口了;线程挂起;恢复;锁的释放获取等等
    一般达到前4层面就可以了,我当时就准备到前4个层面。

但蔚来一面的面试官JAVA功底的确非常强,直接给我打满干到第5个层面,第5个层面我只能根据经验回答了点,也“如实”表达这一块“不记得了”,然后面试官就从操作系统JVM给我讲了第5层面相关的实现【这个面试官小哥确实已经卷到顶了,技术确实不错】

这一个块其实就从AQS这一个问题扩展到很多的知识点问题了。

讲一下Kafka源码Broker Controller(15min 左右)

这个问题也是我简历里写的精通KAFKA源码(但我还特意加了Kafka生产者消费者源码),结果面试官重点问题的是Broker部分的源码以及问题(主要是面试官正好对Broker这块研究非常深)。

这一块我的回答先正面大致回答面试官的问题,从Broker的设计层面先大致扯了分区备份设计,offset topic; 日志索引的设计;之前版本不足(主要是多线程与锁的设计)等等(其实没怎么扳扯到源码,因为我当时确实还没深入研究Broker这块),后面尽量把话题中心带到消费者以及生产者这块的源码底层这块来扯

但面试官还是对Broker念念不忘,然后又和我讲了很多Broker这块的选主;设计以及他们生产遇到的问题。

分布式以及spark问题(15min)

这块还是集中问了

  1. quartz的设计与实现
  2. 分布式锁方案
  3. 选主算法
  4. CAP问题
  5. spark问题这块没怎么问,面试官小哥自己对spark研究很深,跟我扯了spark源码时最优雅的
    等等吧这块也就快速过了

算法题

以上面完就差不多结束了,然后面试小哥说我们走下公司流程,然后飞书里给我发了题目
算法题-合并两个有序的链表
原题 送分题 easy难度 小哥人品 还不错
直接使用双指针每次取两个链表中最小的思路即可
然后和面试官扯下两种方案一个暴力直接合并排序法;一个双指针法,扯下复杂度 完事,算法给的题挺简单

最后

面试时长第一面一个多小时
最后和面试官再次表达了下,我意向是大数据方向,比如数据开发; 平台开发; 数据中台业务;机器学习以及推荐算法都可以,后续是否可以偏向这块面试。面试小哥说会根据我的述求推到数据这块的面试官。

后续二三四轮面试其实都差不多都是主要以项目为主,算法题都不是最难的部分(刷下热门题即可),面试技术难度我这边还是第一轮小哥最强,后面主要偏数据开发以及架构设计部分,后续我再分享

总结:

  1. 项目其实在蔚来面试过程中重要性权重是最大的,八股文以及算法仅仅只是基本的职业专业素养要求,所以大家准备过程中不要本末倒置。
  2. 不会不记得的如实说,尽量引导面试官到你擅长熟悉的领域。
  3. 面试范围还是主要从你简历中选取,所以简历上你写的必须自己得hold主不要被反军了。
  4. 沟通语言能力很重要,回答问题注意思路清洗,脑子里要有大纲,回答层次分明。
  5. 面试是一次非常难度学习的机会,不仅能反思自己更能向强者学习。
  6. 项目很重要,你不仅要非常熟悉你的项目,业界同类型的项目也要非常清楚。
  7. 技术一定要有自己的思考以及总结,这些八股文给不了你,所以做好平时的积累。

待续~~

版权声明:程序员胖胖胖虎阿 发表于 2023年8月30日 下午9:16。
转载请注明:【面经】- 蔚来JAVA&大数据面经分享01 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...