在今天,我收到了蚂蚁金服A级的实习录用offer。css
从开始面试到拿到口头offer(四面技术+一面HR)战线大约拉了半个月,html
从拿到口头offer到收到正式录用邮件大概又是半个月。
前端
思前想后,决定仍是作一个整理与总结。
程序员
一方面是回顾并记录本身的努力过程,
web
一方面也是但愿对后来者起到一些帮助。
面试
前方高能预警,本篇文章万字有余,通读可能要好久。
ajax
如下内容普适于技术岗,非技术岗请部分参考。算法
目录
数据库
如何进行知识积累编程
如何把握实践与理论的天平
我应该如何整理笔记
怎么复习才不会忘
面试前
怎么写出让人眼前一亮的简历
如何突击面试
面试前焦虑该怎么办
面试开始
自我介绍到底要怎么说
面试中
技术面试的时候应该注意些什么
面试尬场怎么办
如何学会埋坑
面试结束
面试官:“你有什么想问个人吗”,该说什么?
我怎样才能知道我是否经过了
我两年半的技术人生
如何进行知识积累
在讲面试技巧以前,显然知识积累是不可或缺的。否则即便面试侥幸经过,在以后的工做中也会体验极差。
1
如何把握实践与理论的天平
实践是什么?
好比你new Object()
初始化了一个对象来使用;
好比你用HashMap结构做为容器存储了一些数据;
好比你拿SpringBoot搭建了一个web网站后台;
好比……
理论是什么?
初始化对象有什么代价?背后的底层实现逻辑是怎么样的?初始化太多对象可能致使什么问题?为何我常常初始化对象,明明是空间消耗大,反而致使程序在运行时间上变得缓慢?
HashMap适合什么场景?我如今这个场景真的是用HashMap最合适吗?运用的时候有没有什么须要注意的?有时候遇到一些特殊需求,在HashMap基础上能够再优化性能吗?
每天用SpringBoot,IOC、AOP究竟是什么概念,背后怎么实现的?它们适用场景如何,个人用法是最佳实践吗?会不会有什么弊端,致使在生产环境出现问题?
……
实践与理论的学习,到底应该侧重实践一些呢,仍是侧重理论一些呢?
都说实践与理论要两相结合,缺一不可,在我看来这是一句废话。重点是如何权衡二者,而且在不一样的发展阶段,二者的侧重比例是否又要发生变化呢?
在我看来,实践决定方向,理论填补细节。
(1)首先要实践,而后填补理论
程序员首先要实践,才可以收获基本的技术视野和处理问题的能力,这二者都是不可或缺的。
有了基本的视野以后,就能够根据本身学习的方向,去填补你的细节,例如:
我学习了Java,会写一些应用程序了,也知道如何利用应用服务层的Java来对数据库层的数据作一些处理,那么接下来: 1. 对数据怎么处理会更快(这里可能就会引出多线程,而后就可能引出线程池,又引出JDK提供的线程池有什么并发问题,怎么解决,而后可能又引入并发包,一会儿串出好多) 2. 各类优化(好比初始化太多对象致使频繁GC,全局变量太多致使占存一直很高blabla)
我学习了MySQL,会用SQL语句操做数据了,知道建索引能够加快访问速度了,那么接下来: 1. 在SQL语句上是否是也能够作一些优化来提高性能(好比颇有名的延迟关联) 2. 索引到底应该怎么建才好(这就涉及到索引的不少知识,好比B+树,好比一些匹配原则例如最左适配原则等等)
这种细节的填补是有逻辑性的,从我上面举的两个例子就能够看得出来。这种逻辑性的存在会使你在学习的过程当中不会感到虚浮,会发现这些理论都是切实有用且有价值的。
但这样的理论学习还不够,由于它不系统。充分的发散思惟使你可以在实践以外追求到不少理论知识,但那些你发散不到的部分就接触不到了。这个时候你就须要系统性的学习,例如读书。
当你第一次学会实践,就好像在本身的脑海中制做了一个知识星球。它里面几乎是空白的,可是球体自己存在,帮助你去界定、区分知识——借助这个球体的框架,当你在遇到一个新知识的时候,你会它有一个模糊的概念:这个知识究竟是有用知识仍是无用知识,它又在哪一个范畴或层面里?
因此借助了一开始的实践,而后你再去逻辑地发散、或者系统地读书的时候, 就不会让新知识成为无根之萍,而是切实地进入你的知识星球中,成为你知识架构的一部分。
(2)理论再返回到实践中
知识架构创建起来了,但它没有经历实践的检验,就依然是不可用的。
一方面在于咱们学习的理论知识多是过期的,甚至是谬误的;另外一方面咱们可能觉得本身懂了但其实没懂,这一点相信你们都能理解。
那么如何实践呢?有些理论多是很难实践出来的,可是至少咱们要对能实践的一部分去作一下尝试。就好比简单的JVM排查和调优,经过MySQL EXPLAIN去检查执行计划并实践优化等等。
2
我应该如何整理笔记
首先要强调笔记是很重要的。至少我认识的那些可以面试进大厂的同窗,每一个人都会为本身作笔记。
而至于到底应该如何整理笔记,我认为最重要的有两点:一是分门别类,二是控制粒度。
(1)分门别类
咱们必定要可以清晰地把咱们要整理的知识模块化,好比说JVM基础,咱们能够这样分模块:
运行时数据区
垃圾回收
类加载
JMM
JVM调优
而后分别根据每个小模块,单独整理一篇笔记。
而且在篇末,或者另开一篇笔记,专门记录针对这个模块的比较大而广的问题。
例如运行时数据区,咱们就能够记录这样一些问题:
讲讲JVM运行时数据区的各个组成,是什么,有什么用
讲讲对象。它是如何建立的,里面包含一些什么信息,如何定位到对象
记录这种大的问题,有助于咱们进行自测。不要问本身太多细小的问题,除非你切实以为它很重要。
什么叫细小的问题呢?好比:类里静态的基本数据类型存在方法区仍是堆里?
这种问题枚举你是枚举不完的,它其实已经包含在了”讲讲JVM运行时数据区的各个组成,是什么,有什么用“这个问题里。
(2)控制粒度
什么叫控制粒度?其实就是控制你笔记记录的详细程度。
若是你笔记中对于知识点的描述很是简洁,带来的好处是阅读起来就会很快,坏处是可能在阅读时致使你忽略掉一些本不应忽略的细节,或者甚至是:”咦,我这记的是啥,我怎么看不懂了。“
那若是记得太详细呢?很显然,就会致使阅读起来很是繁琐,可能达不到一个理想的迅速复习的效果。
那到底应该控制在一个什么程度上呢?
我认为一篇良好的笔记应该知足如下两个条件:
这段笔记切实提到了全部应该提到的知识点,不须要我去联想;
这段笔记对于这些知识点都有简单的描述性文字,而且可以言简意赅,尽量以列表列举的形式,不要有叙述性的内容。
tips:什么叫叙述性内容?
举个例子,好比下面这是一段对于垃圾回收算法里的标记-清除算法的笔记:
标记-清除算法:
标记出全部须要回收的对象,根据标记统一回收。
问题:1. 低效率
2. 产生大量不连续内存碎片
带有叙述性内容的写法是怎么样的呢:
标记-清除算法:
它的基本原理是,标记出全部须要回收的对象,而后根据标记统一回收。
它有两个问题,一是在于效率比较低,二是在于可能产生大量不连续的内存碎片。
很是显然,阅读前者的效率远高于后者。
整理笔记时,咱们尽量省去没必要要的铺垫,例如”它的基本原理是“这句话就是彻底没必要要的。
咱们也能够尽量省去一些联结词,例如”首先“、”而后“、”最后“这种。以及对于一些枚举性内容,咱们尽量采起列表而非文字形式表达,会更加直观易懂易记。
3
怎么复习才不会忘
天天都反复复习固然能够保证你不会忘,但会很是疲惫并且费时。
严格遵照网上的某些号称贴合人类记忆曲线的复习方式,坚持起来压力很大,最终每每也很难达到本身理想的效果。
实际上这种所谓”曲线“是有必定道理的,可是也要结合咱们每一个人自身的特殊状况,去找到最适合本身的一种记忆方式。
我认为这样一种记忆法是比较有效的:
从第一次复习并记忆的时候开始算,隔比较短的一段时间再复习并记忆一次,隔不过短的一段时间再复习一次,而后坚持每隔较长的一段时间就复习一次。
那么这个”比较短的一段时间“、”不过短的一段时间“、“较长的一段时间”又分别是多久呢?咱们能够本身来决定。但须要知道的是,咱们的复习间隔时间应该是不断变长的,直到一个比较稳定的值。
好比我我的的话,就喜欢第一次记忆完后,两小时再复习一次,隔一天再复习一次,而后隔四五天复习一次,以后可能就一直是7-10天会复习一次。
无需刻意,好比我原本打算三天后复习一次,可是三天后忽然有什么事耽搁了。因此我提早到前一天,或者滞后到后一天,又能怎么样呢?记忆是量变的过程,一天两天的偏移根本不会有什么质变可言。
但让记忆周期大抵符合一个慢慢变长的规律,我想是有必要的。而若是你以为最后每隔7-10天复习一次都会压力很大,那你也能够半个月甚至二十天才看一次。不过这样的话,等面试要来临的时候,你可能就不免须要简单突击一下了。
面试前
1
怎么写出让人眼前一亮的简历
按照通常流程来讲,你的简历会先给懂一点技术/不懂技术的HR初审,而后再交给研发的同事过审,通过这两层都ok了,才会给你进面试的流程。
也就是说,你的简历不只要让专业人士看着厉害,还要让非专业人士看着也厉害。
那么做为技术人员,简历到底应该怎么写呢?
(1)综述
咱们不妨先归纳后具体,先整体看一下简历应该写一些什么东西,写多长篇幅,排版成什么样子,而后再分析每一个模块应该如何去写。
一个正常的简历应该有以下内容:
基本信息及联系方式
学习经历
工做经历(或实习经历)
项目经历
专业技能
自我评价(这个不必定要有,看前面篇幅)
做为技术人员,我以为简历1-2页就好,3页未免太过冗长。
首先格式上来讲,如今通常都是网申,也就是提交电子材料,因此HTML或者PDF格式为佳。
具体排版的话,尽量简洁明了,不要花里胡哨。技术人,又不是去作UI设计,搞那么好看,人家也不会欣赏,反而以为你游手好闲。
我我的建议简历的好看程度,达到markdown能支持的极限就能够了,不要超过markdown的能力。
(2)基本信息及联系方式
可能会包括如下一些信息:
姓名,电话,邮箱:这几个是必须的,很少说了。
求职意向:单独列这条出来,我建议要写。否则你原本作后端的,人家给你安排到测试开发,你哭都来不及。
我的网站/博客/GitHub:若是有厉害的必定要记得写,若是很水的话建议别写了。
(3)学习经历
可能会包括如下一些信息:
学历(或者毕业年份)
绩点:若是很差看,请不要写,不要写,不要写
专业:若是不是计算机相关专业,请不要写,不要写,不要写
奖项:尽量多写,从高到低排。先写厉害的,最后写不厉害的。若是没什么拿的出手的奖项,建议干脆什么也不要写。不要孤零零写个什么XX大学优秀团员上去,还不如不写。
(4)工做经历(或实习经历)
这里就如实说就好,切记必定要准确,包括在职时间也写明白,一两个月的误差也是在给本身埋炸弹。
应该包括如下信息:
在职时间:例如2018.2~2019.3
工做单位:若是不是你们熟知的大厂,最好附上行业
部门:这个是可选项,不必定要写。
若是是厉害的部门请记得写,好比腾讯微信
岗位:建议具体。若是公司里岗位就叫“研发工程师”,
你能够写成“JAVA研发工程师”或者“GO研发工程师”之类的。
(5)项目经历
这是第二重要的部分!!第一重要的部分是下面的专业能力。但这也是决定你是否能简历过审的很重要的一部分,而且是可能致使面试官疯狂追问你的来源。
通常写2-3个项目经历比较好,相对来讲,要挑最厉害的、最对口的、最近的。
那么每一个项目经历中,应该写一些什么呢?
项目名称
项目简介:1-2句话就好,让别人知道你这是个什么项目。
好比是个后台管理系统?好比是个电商平台?之类的
我的技术工做:请以列表形式列举本身的核心工做,
不要大段叙述性文字!!
后面是一些可选项,不必定要写:
技术关键词:项目中涉及到的技术关键词
项目中的收获
项目成果:项目上线后有什么成果。
好比抗住了多大的QPS,好比作到了多大的规模等等。
请注意这二者是有区别的,前者可能更强调峰值,后者是长期的稳定性。
固然还能够有其余的,但最好要有技术视角。
给一个优秀的范例(来自敖丙大大):
若是以为这个有点过高大上了,再看一个普通一点的:
(6)专业技能
专业技能方面应该尽量讲得全面,把本身肯定会的一个都不要漏掉。
可是必定要和岗位对口。好比你投个Java后台,你非得写个摄影技能上去,反正我我的感受不是很好。
若是你不知道怎么写,能够看一下岗位描述。通常投递简历前你看到的岗位描述上都会有对于技术要求的说明,好比:
=======咱们的要求=======
全日制211本科以上学历,计算机相关专业,毕业时间2020.11-2021.10
JAVA基础扎实,理解io、多线程、集合等基础框架,对JVM原理有必定的理解
熟悉分布式、缓存、消息、搜索、推荐等技术,并能合理应用,解决实际问题
学习能力强,对代码质量及系统性能具有精益求精的精神
良好的团队沟通协同能力,抗压能力,敢于接受挑战
有做品或者实习经验优先
咱们能够根据岗位的要求,结合咱们自身的优点,来写咱们的专业技能。像这样:
2
如何突击面试
我我的以为,突击面试是在面试前1-10天的这个阶段。
(1)笔试突击复习
这个是毋庸置疑的。以前在怎么复习才不会忘里说,最后坚持每7-10天复习一次。若是你坚持了这种频率,我以为笔记突击复习对你来讲几乎是不须要的。不过若是你以为心有不安,能够在突击阶段天天复习一次。
切记一点,笔记突击复习时,请记得本身问本身问题,而后模拟一下在面试官面前你会怎么回答。别只是记忆,你还要学会如何表达。
(2)针对性复习
针对性复习包含两方面:把握公司面试特色+刷特定面经。
首先是把握公司特色。打个比方,若是你去面试字节跳动,可能就须要多准备一点算法、网络,他们很喜欢问这些。若是你去面试美团,你可能就更须要准备一些JUC并发包、框架。
把握公司特色很重要,你会发现即便一样是面试JAVA岗位,不一样公司的面试内容差异也会很大。
甚至不仅是公司。到部门层面,差异也会很大。某公司A部门的JAVA岗,和该公司B部门的JAVA岗,就是要求不同的。也许一个更注重并发能力,一个更注重排查调优能力等等。这一点你能够从岗位要求里去了解,或者问部门里相关的人员。
其次是刷特定的面经。如今网上有不少人分享面经。可能不必定能直接找到你如今面试的部门的面经,但你至少能够找到同一家公司下、业务类型相近的面经。把他们题目拿过来,给本身模拟面试一遍。和前面说笔记突击复习同样,模拟你的表达,别只是内心想想答案就过去了。
(3)每日一道算法
若是你面试中可能会出现算法题,建议你在突击阶段天天一道LeetCode以保持手感。不过这因人而异,有些人即便好久不作算法,临阵磨枪也不虚。
3
面试前焦虑该怎么办
什么深吸一口气?站在阳台看看窗外?我以为效果不是很大。
深呼吸在面试前半小时是有效的,它能够缓解你面试前过度紧张的情绪。但它是缓解紧张的,没法缓解焦虑。
焦虑的源头在于:惧怕意外的发生。我以为缓解焦虑最有效的方式就是,为本身规划好一切。
在突击面试以前,时间尚早,相信你也不会有太多焦虑。当突击面试阶段开始,你就要开始学会为本身规划。让一切有条不紊地进行,你会发现你再也不会为面试和其结果感到焦虑,由于你知道你本身作到了最好。
那如何规划呢?
不妨给个例子:
好比我在下周六(2020-04/18)是阿里的一面。而今天是周日(2020-04-12),接下来我怎么安排呢?
2020-04-12 周日
复习单线程容器、JUC包,整理出相关的大而广的面试问题,进行自测。
2020-04-13 周一
复习网络、操做系统
2020-04-14 周二
复习JAVA常见面试题、JVM
2020-04-15 周三
复习MySQL和Redis
2020-04-16 周四
复习Spring、IO、设计模式
2020-04-17 周五
网上查阅面经自测,作两道算法恢复一下手感
2020-04-18 周六
盯着本身准备好的各类大而广的问题反复车轮式复习,直到面试前半小时。
半小时里再背一遍自我介绍,复习一下简历里的项目。
迎接面试。
若是这样规划之后,依然让你感到十分焦虑,很简单:把规划再细化。
你会发现,当规划的细致程度达到某种阶段之后,你的焦虑会转化成压力和动力,不会再让你手足无措。
最后说一个小tip。其实让你面试前不焦虑还有一个很是简单的办法,就是多投递简历,多面试,面多了你就会感到麻木,不会焦虑了。
面试开始
1
自我介绍到底要怎么说
若是是一面/二面,通常是纯技术面,这个时候我建议能够遵守这样一种自我介绍模板:
自报家门
介绍本身的技术方向和技术能力
我主攻的方向是XX,从技术上来讲,我对于XX、XX(枚举一些技术点)比较熟悉(以引导面试官问你熟悉的内容)
介绍项目经历(什么项目,在里面作什么事情,有什么难点,怎么克服的,有什么收获)
我在以前XX(读大学?在XX工做?之类的)的时候,很喜欢并善于研究 / 作过一些有价值的项目,好比blabla。期间遇到过一个问题至今印象深入,blabla。通过这个项目,我吸取了一些blabla的知识。
tips:在介绍项目经历的阶段中,“在里面作什么事情”是最重要的模块,必定要讲清楚,作什么事情决定你在面试官第一印象中的高度。而“有什么难点,怎么克服的”是给你一个埋坑的机会,让面试官更有可能在这个点上去追问你。
收尾
但愿在将来,能够把这些知识(以前项目中提到的知识)运用在工做中。
也但愿在本次面试中,能够获得面试官的一些建议和指导。
若是是三面/四面/HR面,而且你切实以为可能再也不那么纯技术了,你的自我介绍能够向软实力角度偏移,这里拿个人自我介绍给个例子:
tips:整理你本身的自我介绍的时候,请切记不要太书面语,背起来不舒服不说,真正到自我介绍的时候也会显得生硬。
您好,我是来自XX大学XX专业的XX。
我想从技术理论、项目实践、工做能力上来简单介绍一下本身。
首先是技术理论。我主攻的方向是Java后台。技术上来讲,我对于Java基础、JVM、并发容器、线程池等等仍是比较熟悉的,另外在框架方面用SpringBoot比较多,读过Spring的源码。而数据库层面的话,磁盘数据库中我对于MySQL尤为是InnoDB引擎比较熟悉,内存数据库中对于Redis比较熟悉。
而在项目实践方面,我对于理论和实践的结合一直是比较看重的。从大一入学两个月我就有带领大一的学生队伍参加院里的项目比赛,以后陆陆续续到今天累计也作了不下十几个项目了。而在这些项目中,在综合方面我主要担任的也都是一个负责人的角色,而在技术方面我主要作的则都是Java后台的部分。我开过会议,出过文档,写过代码,也参加过有好几百人做为听众的大型答辩,应该说无论在硬实力仍是软实力上,都获得了很不错的锻炼。
最后是个人工做能力。我现今任咱们专业XX班的班长,已经历时一年半,对于组织工做应该说是很是熟悉了。另外,我也有参与学校里一个较大型的信息技术工做室,出任其中的技术部负责人,偶尔会带领学弟学妹们进行一些项目实践,以及参与引导部门及工做室的规划安排。事务不少很杂,也培养了我强大的规划力和执行力,相信这也可以使我在将来的工做中驾轻就熟。
面试中
1
技术面试的时候应该注意什么
要从表达和内容两方面来说。
(1)表达
表达切记必定要口齿清楚,逻辑清晰。
口齿清楚这一点相信你们都能领会。可是也不排除有些小朋友一紧张口齿就不利索,这个必定要注意。
更有甚者有时候遇到不太肯定的问题,想要以口齿不清来蒙混过关,这种更不可取,基本是搬石砸脚。
如何保证这一点呢?有时候当遇到一个措手不及的问题,很难保证咱们的逻辑又快又清晰。
因此最简单的方式,就是用速度的牺牲来换取逻辑的明了。甚至有时候你能够短暂地沉默一下子,好好整理一下思路,千万别张口就来,致使说得乱七八糟不成体系。
(2)内容
对于一些切入点很是小的问题,直接回答就能够。好比说:
Q:对象的锁信息是存在哪里的?
A:在对象头MarkWord里
可是对于一些切入点比较大的问题。例如:
Q:讲讲垃圾回收?
Q:集合里ArrayList和LinkedList有什么区别?
回答的内容切记不可过于简短,但也不能胡乱堆砌。最好的方式是水平扩展或者垂直扩展。
不妨就拿上面的一个问题来举个例子。好比说讲讲垃圾回收。
水平扩展的话,应该怎么讲呢?
A:
有关垃圾回收,咱们首先要考虑两个问题。一是如何判断对象可回收,二是用什么样的方式来回收。
首先对于前者,有引用计数法和可达性分析两种方法,它们分别……(讲讲它们的含义,优缺点)
而对于后者,市面上主要有标记-清除,标记-整理,复制三种回收算法,它们分别……(讲讲含义,优缺点)
结合这些算法,市面上就出现了不少垃圾收集器,例如Serial,ParNew,CMS,G1……(顺便讲讲它们的回收逻辑,优缺点)
面试官:(暗自点头)
水平扩展也就是从一个问题出发,把与它相关的整棵知识树或者整颗知识树的一部分(若是树太大的话)讲出来,体现你的知识是有架构有体系的。
垂直扩展的话,又应该怎么讲呢?
A:
垃圾回收的话,自JDK1.8后,市面上就很是流行G1垃圾回收器了。它是不分新生代和老年代的,基本原理是……(讲讲含义,优势)
可是垃圾的频繁回收势必会致使用户体验的降低,虽然G1已经很优秀了,做为开发者咱们仍是须要关注JVM的优化(话锋一转,开始走向深度)
(讲一些具体的优化策略)
面试官:(暗自点头)
垂直扩展主要是须要自行找到一个切入点。或者面试官已经把切入点给到你了,那么接下来你要引入本身的思考,按照一个没有漏洞的逻辑走向深度,体现你是勤于思考而且善于发现并解决问题的人。
2
面试尬场怎么办
首先若是是由于你答不上来而尬场,你就乖乖说你不会,千万别强撑。
若是不是这个状况,是面试官一时沉默的话:
有时候面试官可能很忙,他可能都没来得及看完你的简历就来给你面试。换言之,他并无作太多的准备。因此临时尬场也是很是正常的。
因此如今你要作的就是:让面试官不要尬场。
打个比方:
Q:你说你熟悉线程池,那你说说看线程池都有些什么重要的参数?
A:好比有核心线程数、最大线程数、容许存活时间、阻塞队列等等(顺便简单说一下这几个参数都是什么含义)
Q:嗯不错……(开始沉默)
通常面试官的沉默多是你回答完这一个问题以后,他一时间想不到问什么。这个时候你能够继续沿着这个问题扩展下去:
A:关于线程池还有一些须要注意的地方。好比当一个任务添加进来的时候……(讲一下任务添加到线程池的流程)
A:考虑到这样一个流程,因此咱们在控制最大线程数、阻塞队列的时候是须要注意的。若是最大线程数设置过大,或者阻塞队列设置上限过长,可能致使OOM(又联系回前面参数的问题)
是否是联系回去没关系,可是只要你依然在讲这个问题相关的知识树里的东西,就能够有效地缓解尬场,还会让面试官以为:
面试官:(嗯这小伙基础还挺扎实)
3
如何学会埋坑
埋坑是很是重要的一个技巧。
什么叫埋坑?就是在回答前一个问题的时候,适当地对面试官进行引导,让他可以问你想让他的问题。
面试前是最容易埋坑的。一是简历里的项目经历,专业技能;二是自我介绍阶段,讲一些本身擅长的技术点等等,引导面试官去问你。
而在面试的过程当中,应该如何埋坑呢?
打个简单的比方。
好比如今面试官问你:”ArrayList和LinkedList有什么区别?“
你先中规中矩地回答。回答完以后,咱们能够根据咱们的擅长点作一些不一样的策略:
若是你比较擅长并发容器,你能够说:
ArrayList和LinkedList都属于单线程框架,是并发不安全的。若是要并发安全的话,须要使用CopyOnWriteArrayList或者ConcurrentLinkedQueue
若是你比较擅长线程池,你能够说:
ArrayList和LinkedList分别是对数组和链表的封装。JAVA中比较重要的对于数组、链表的封装集合类还有线程池中的阻塞队列,例如ArrayBlockingQeque和LinkedBlockingQueue
固然了,埋坑只能启到必定的导向做用,最终决定权仍是在面试官手上。不要太刻意,否则会拔苗助长。
面试结束
1
面试官:“你有什么想问个人吗”该说什么?
这个问题能够给几个例子:
您对我有什么建议吗?
您平时工做中主要作些什么呢?
若是我有幸可以被录取的话,主要会作一些什么样的工做呢?
2
我怎样才能知道我是否经过了
我我的不建议在面试完后直接问面试官:”我经过了吗?“
并且面试原本就是双向选择,你是在众多offer中挑一个最喜欢的,人家也是在众多面试者中挑最好的那一批。
因此若是你想要知道本身是否经过了,最好的方式是从面试官对你的态度中窥探。
好比你最后问:”您平时工做中主要都作些什么呢?“
他给你回答得很是详细,并且还会主动跟你聊一点别的,好比告诉你进来之后会作什么之类的,那说明他仍是很承认你的。
若是他只是简单说一下,有点敷衍的样子,不排除只是他工做忙的可能,但你最好也能够考虑一下,找找其余出路了。
另外,等面试结束后,若是你有推荐你去面试的推荐人或者HR的联系方式,你也能够直接问他们面试的结果。
我两年半的技术人生
最后附上我两年半的技术生涯,中间难免有些弯路,但整体仍是令我满意的。
但愿给有须要的人以参考。
1
2017(入学
参加社会上的Java语言基础培训课程,学习Java,基本上到能够简单使用Swing的程度,对于反射泛型等中高级知识一窍不通;
拉了五个也是大一的小伙伴参加学院的创新创业比赛,基于Java Swing写了一个井字策略游戏,拿到学院的优胜奖;
机缘巧合认识了一位研二的研究生,经他推荐进入一位教授的实验室作商业网站;
在研究生的带领下认识SpringBoot和Mybatis,原理一窍不通,可是能够写一点CRUD;
Java语言最基础内容的使用比较熟练了
有了可怜到几乎能够忽略不计的web后台开发经验
当时学院算法学习氛围比较好,到年底我大概至关于共计刷了一百道LeetCode中等题
2
2018(大一~大二)
进入培训机构学习web前端,了解了html-css-js,学会ajax;
划水度过,我不知道我在干吗,就好好上课;
7-8月暑假
作一些基于SpingBoot的简单实践,初步学习Unity游戏引擎;
划水;
学校各类创新比赛启动,我都参加了,最后同时启动了大约6-7个校园小项目;
这是我多角度尝试的一年(好比web前端、游戏开发),由于我还并无决定之后从事什么方向。大约在暑假后(9月),我才以为本身将来应该会作Java后台;
在后台技术上提升很少,只是熟练了那么一丢丢;
项目启动不少,那个时候以为项目很重要很能锻炼人,后来以为其实作那么多差很少级别的项目并非颇有意义。
4
2019(大二~大三)
我启动了太多项目,CRUD崽忙不过来了!!
各类项目比赛遍地开花的几个月:
3月:两个创新培育项目,一个国创一个市创评级
4月:上海市计算机应用能力大赛二等奖
6月:校大夏杯创业大赛铜奖
但只有我本身内心清楚,奖是拿得很不错,可是技术上其实都是同样的东西,并且很是简单很是基础。全是传统的小型单体web项目,业务驱动。
仍是3-6月
比我大两级的拿到蚂蚁金服正式offer的学长来说了Java面经,我终于意识到本身太菜了。可是跟着大三春招的洪流,我也没忍住投了几个简历试试:
携程:一站式面试,我不知道一站式是什么意思,去面了一面自我感受良好,就直接走了!走了!没在那等着继续面下去,就没了。
字节跳动 · 北京:视频面试,在第二面挂了,评价是”相对大二学生来讲比较优秀,可是暂时还没达到实习岗位的要求“
买了一堆蚂蚁学长推荐的书籍,例如《高性能MySQL》、《深刻理解Java虚拟机》、《Java并发编程实践》、《图解HTTP》等,开始有计划地阅读起来;
去安徽会场参加全国大学生计算机设计大赛的答辩,荣获一等奖。仍是那句话,真没啥技术含量。可是提高了我答辩的能力和吹嘘的水平;
继续读书。
这是我从实践逐步转战理论学习的一年。以前的我太过于知其然而不知其因此然了,写项目都是不考虑原理的。自蚂蚁学长分享了Java面经以后,为我指出了方向。
这一年我仔细阅读了《高性能MySQL》前七章,《深刻理解Java虚拟机》近整本,也买了《MySQL技术内幕 InnoDB存储引擎》看完了一整本,作了不少笔记。
我还买了不少其余杂七杂八的书,例如《轻量级微服务架构》、《图解TCP/IP》、《大型网站架构》等等,有些是几乎读不懂,有些是没怎么读,大抵算是这一年走的弯路。
5
2020(大三)
疯狂整理、复习,中旬参加了携程的平常实习面试,经过了,年前进入携程实习;
过年几天还带了两本书回老家,可是真的学不进去。回来后由于疫情远程办公,同时不断进行复习与整理,准备春招;
3月
开始进入春招面试阶段。只投了字节和阿里,都经过了;
一直到今天4.11,一直是静待offer。没有什么事情,就不疾不徐地学一学SpringCloudAlibaba,平时就谈谈恋爱,打打游戏,看看电影。
我两年半的技术生涯,主要走的是 实践学习 → 理论学习 → 实践理论相结合 这样一条路线。
一开始的实践学习就像是培训班生活,只不过是自我培训;
而后到理论学习层面,有幸听到蚂蚁学长的面经讲座,加上有以前的实践基础,让个人理论学习有方向感且不会太虚浮;
最后是实践理论相结合层面,主要就是把我一些新学习的没实践过的理论付诸实践。就好比学习了JVM调优和问题排查,就本身写一个死锁程序或者OOM程序而后用排查工具来排查一下问题。
最后祝认真阅读到这里的你,必定会拿到心仪中的offer!
END
由于我说:volatile 是轻量级的 synchronized,面试官让我回去等通知!
关注公众号发送”进群“,老王拉你进读者群。