拿下阿里头条滴滴的offer后谈谈面试经验
Posted javatiange
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拿下阿里头条滴滴的offer后谈谈面试经验相关的知识,希望对你有一定的参考价值。
背景
本人两年开发经验、18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴、今日头条、滴滴等公司offer,岗位是Java后端开发,最终选择去了阿里巴巴。
面试了很多家公司,感觉大部分公司考察的点都差不多,所以将自己的心得记下来,希望能给正在找或者准备找工作的朋友提供一点帮助。另外,目前在阿里也做面试官的工作,身份从求职者变为面试官,看问题的很多角度也不一样,所以下文中既有求职者的视角,也有面试官的视角。
面试流程
先说下面试流程,一般大公司都有3-4轮技术面,1轮的HR面。就阿里而言,我共经历了4轮技术面,前两轮主要是问基础和项目实现,第3轮是交叉面,两个面试官,主要是问项目实现和拓展。第4轮是部门老大面,主要就问一些架构、技术和业务的理解、个人发展比较抽象的东西了。
HR面主要就是跟你聊聊天,看看你的个人稳定性、价值观、主动性之类的,一般HR是不会挂人的,但很多人在HR面后挂了,原因其实不是你在HR面的表现不好(少数情况除外),而是你之前几面的表现一般,比60分要高一点(所以没在前面的面试直接挂了你),但是又没达到80分,这个时候公司基于hc、人才配比、与其他候选人的对比等多个维度考虑,最终决定是否给你offer。
另外要特别说下的是,今日头条对算法的考察会比较多,我面了4轮技术,每一轮都会问1到2个算法题,大概是leetcode上easy和medium难度。所以想去头条的同学最好先去leetcode上刷刷题。
要注意的点
-
简历一到两页为最佳,将项目经历写2-3个左右就差不多了,一定要写最有亮点的项目
-
工作经历的起始时间要写清楚,另外大公司都有背调,不要合并或省略一些比较短的工作经历,影响的可能不只是这次面试,而是之后可能都无法进这家公司
-
博客没什么好文章,github没好项目就不要写在简历中了
-
对于面试官的问题,想清楚再回答,如果觉得需要的时间可能比较长,可以跟面试官说我思考下、我整理下思路之类的
-
遇到不会的问题直接说不会,不要不懂装懂
-
遇到比较确定的问题,要有自信一点,有时候面试官可能会故意用怀疑的语气来考察你
-
面试的过程中注意语速和吐字,本人在做面试官后,发现很多人说话语速很快,或吐字不清,导致原本会的问题也会让面试官觉得你没答到点上(尤其是电话面)
-
面试过程中可以自信但不要与面试官争执
-
面试完后不要直接问面试结果
-
面试保持自信而不自大,曾经问一位候选人说对hashmap是了如指掌,结果问到hashmap扩容时需不需要重新计算hash就懵逼了。对于很多人来说,面试官总有办法把你问倒的。
-
每次面试后都总结有哪些答的不好的地方,有哪些知识点的盲区,解决掉。
-
被问到为什么想跳槽的时候,因该从自身发展等角度出发,而不是吐槽前公司。
另外,在求职的过程中也碰到过少数没有素质的面试官,比如一上来就一副很不屑的语气,话没说两句开始diss你的项目,给人的体验很不好。所以也请各位面试官或将来要做面试官的同学,能在面试的过程中保持基本的礼貌和尊重,就像在阿里常说的:你面试别人的时候,别人也在面试着你。
最重要的一点,不要因为几次的面试失败就开始怀疑自己,永远记住,面试的结果=实力+运气。有时候你擅长的东西可能面试官根本不会,所以他也不可能花很多时间去问他不懂的东西;有时候可能他问你的你都会,但是可能因为对方提问方式、语气等原因,答的就是不顺畅。
接下来说技术相关的考察。
总的来说,技术相关的考察主要分为两大块,一是基础,二是经验。
基础包括java基础、数据库、中间件等,来自于日常的积累和面试前的准备。
经验包括以往做过的项目、解决的问题、以及一些场景题(比如你的项目如果流量大了十倍如何保证可用)。
我说了这么多,不知道你是否对自己有了全新的定位,在学习上有了明确的标准?如果你符合我说的,那么恭喜你已经或者即将成功。如果感觉到压力,那更要祝贺你,因为以后就是你蜕变的过程,请享受它!下面分享:我分享翻阅过的的一篇神仙文档以及其他技术干货!
一篇神文档就把java多线程,锁,JMM,JUC和高并发设计模式讲明白了
最后给大家分享一篇一线开发大牛整理的java高并发核心编程神仙文档,里面主要包含的知识点有:多线程、线程池、内置锁、JMM、CAS、JUC、高并发设计模式、Java异步回调、CompletableFuture类等。
首先,咱们先来看目录
下面是详细的目录
其次咱们来看每个小节都有哪些内容
多线程原理与实战;
Java内置锁的核心原理;
CAS原理与JUC原子类;
可见性与有序性的原理;
JUC显式锁的原理与实战;
AQS抽象同步器的核心原理;
JUC容器类;
高并发设计模式;
高并发核心模式之异步回调模式;
CompletableFuture异步回调;
那么如何实现质的飞跃?
1.技术沉淀(学习+积累)
对于技术新人来说,无论是在大厂小厂,还是在外包公司,基本上都是做得简单的CRUD工作。很多人认为,重复简单的工作对自己的技术是没有提升的,但实际上也有人能从中杀出一条血路,所以关键是你自己是否花了心思,付出了努力。
当然,我个人也有自己的一套学习方式和习惯,平时喜欢利用碎片时间来看点什么东西,比如一些技术性的书籍或文档,还有一些视频讲解等,经常会让我有一种恍然大悟的感觉,对我的工作也起到了很大的帮助。
- 阅读书籍文档:
- 看视频学习:
- 面试刷题:
BAT一线大厂面试题
2.确立正确的技术方向
在我看来,有时候选择比能力更重要,俗话说:站在风口上,猪都能起飞。
对于程序员来说,尽早地做好自己的职业规划,确立发展路线,是很有必要的。我认为,同样的实力,善于发现和判断机会的人,永远占据先机。
程序员的发展方向,大致分为三类:
- 架构师
- 项目经理
- 管理者
首先抛开管理者不谈,就前两个方向来说,对你的技术水平和工作能力都有一定的要求,首先我们要清楚,技术是根基,其次才是能力偏差。
比如,架构师需要你具备完善和扎实的技术体系,具有一定的修养,具备较好的系统分析和设计能力,具有丰富的开发项目经验;而项目经理,除了技术要过关以外,还应该了解软件开发的的各个环节、了解开发的各种技术和运用、了解开发队伍人员的水平和特点。
3.学习如何阅读别人的代码(笔记)
不知道为啥,很多开发人员总有一股“迷之自信”,抱着“除了我,其他每个人写的代码都是垃圾”这种想法,用杨笠的观念:为什么你明明很普通,却又那么自信?
实际上,能够在别人的代码之上继续工作是一项有多重好处的伟大技能。因为不论以前的代码是多么混乱或者考虑不周,你都需要去扩展它。
由此,它会对你两方面都带来益处:
- 能够阅读他人的代码是一个了解什么是糟糕设计的好机会。
- 能够阅读别人乱七八糟的代码的话,也使得在需要更新的时候变得容易。
我个人会阅读一些大佬的技术笔记,其中就包括了一些开发技巧和源码:
(篇幅有限,只展示部分了,笔记包括Spring全家桶、Redis、mysql、JVM等各个知识点)
- Spring源码笔记
- SpringBoot技术笔记
- 玩转Redis实用笔记
4.培养自己的场景化思维
在工作的前两年里,我一直都在培养自己的场景化思维,这种思维是很难在大学学习中复制到的。何为场景化思维?也就是会主动去思考最终用户可能会如何错误地使用你的软件。
由于大部分编程都是维护性的,因此它通常意味着更改与其他代码高度耦合的代码。即使是简单的更改也需要跟踪对象、方法和 API的每一个可能存在引用的地方。否则,很容易意外地打破你没有意识到的模块连接。即使您只是更改了数据库中的数据类型。它还包括在进入开发之前通过边缘案例和整体化的高级设计进行思考。
对于开发新模块或者微服务的场景就更加复杂,花时间去考虑所构建的操作场景非常重要。想想未来的用户可能需要如何使用您的新模块,他们可能会如何不正确地使用它,可能需要什么参数,以及未来的程序员是否会以不同的方式需要您的代码。
简单的编码和编程只是问题的一部分。创建一个在你的电脑上运行良好的软件是很容易的。但是部署代码可能出错的方式就会有很多。一旦进入生产环境,就很难说代码将如何使用,以及哪些其他代码将附加到原始代码中。五年后,未来的程序员可能会对你的代码局限性感到沮丧。
因为文章内容实在是太多了,不能够给大家一一体现出来,每个章节都有更加细化的内容。大家需要完整版文档的小伙伴,可以一键三连,下方获取免费领取方式!
以上是关于拿下阿里头条滴滴的offer后谈谈面试经验的主要内容,如果未能解决你的问题,请参考以下文章
亲身经历的Android安卓面试经验分享:出身于双非学校,照样拿下头条Offer
三年开发经验,从小厂离职后,我凭什么拿到了阿里腾讯今日头条的offer
5年Java后台经验渣本程序员,阿里面试了 7 轮(拿下 P7 岗 offer)