个人2017是忙碌的一年,从年初备战实习春招,年三十都在死磕JDK源码,三月份经历了阿里五次面试,四月顺利收到实习offer。而后五月怀着忐忑的心情开始了蚂蚁金服的实习。八月,又经历了两轮面试,总算拿到转正offer。到此为止,我总算能够尽情地享受最后的校园时光了。 但愿个人经历与感悟能帮助到你们。html
阿里是我读研阶段的一个重要目标,刚上研一的时候我便立下Flag,计划了读研三年要作的事情、要学的东西。翻翻个人博客,竟然还能找到当时写的读研计划(想一想时间过的真的好快呀)。阿里在我心中一直是技术者的朝圣地,汇集了一群技术狂热分子,为了提高一点点的性能能够废寝忘食。在立下这个flag后,我便把我要去阿里的想法告诉了身边的全部人。我不想给本身留有后路,既然牛逼吹出去了,那就得落实到行动上。前端
我当时的计划是这样的,研一玩命作项目,毕竟写代码是一项孰能生巧的技术,多写代码天然能加深对技术的理解。事实也确实证实了这一点。我大四毕业的那个暑假,第一次接触《深刻理解JVM虚拟机》,当时看完以后是一脸懵逼的,全部的汉字都认识,但连成一条句子后咋就不明白呢?而后怀着这种一脸懵逼的状态,强行把这本书看完了,但因为理解的不够深入,很快就忘记了。而后通过一年疯狂作项目,当我再抱起这本书时,我对这本书的感受有了180度的转变,通俗易懂啊。我怀疑本身当时为何这么傻。而在这一年以内,我一共作了四个项目。因此说,写代码能潜移默化地提高你对技术的理解程度。java
记得咱们学校考研结果公布是在三月底,得知我录取了,短暂的高兴了一下,次日便去了导师实验室,参与到项目中去。由于我心理很清楚,个人目标是阿里。 刚去实验室的时候感受本身彻底是一只小白,师兄们开会讨论的东西我居然一个字都听不懂,刚开始分到的工做也很难顺利的完成。但我是一个天生不服的人,我越是不懂,我越是要征服。(PS:追女生也同样,当时看上了一个高冷型女神。越是高冷,我越要拿下……省略一万字……最后成功了)。我渐渐跟上了师兄们的步伐,从第二个项目开始,我一直是项目负责人了。 我给本身定的方向是Java,而实验室的项目五花八门,Qt、C++、图像图形……,但我内心清楚,这些项目能够拓宽个人视野,能够锻炼个人学习能力、思惟方式,但要深刻理解的技术仍是Java。因此我利用项目空窗期,看了不少Java方面的书籍,文末我列了一份清单供你们参考。程序员
研一作了一年项目以后,感受本身解决问题的能力、快速上手新技术的能力有所提高,但作项目一味求快、一味赶时间,我对不少技术的理解仅停留表面。因此更多时候我感受本身是在搬砖,很难写出高质量的代码。当时我决定,研二的上半学期必定要好好稳固基础,深刻理解技术背后的原理,放慢作项目的节奏,不一味地盲目求快。web
然而研二由于种种缘由,我去了一家创业公司实习。既然我没法选择,那我就拥抱变化。既来之则安之,我但愿本身所花的时间都有所收获。因此我全身心投入到工做中去。公司安排我作前端,虽然这并非我想干的事情,但当前别无选择,既然作那就得作好。我花了一个月的时间怒刷前端知识,学习Angular、React,了解它们的设计思想,学习JS背后的原理,也看到了前端目前的发展情况。前端的技术迭代速度很快,但技术背后的原理都是相似的,因此抓住技术背后的本质才是最重要的。 这段实习一直持续到了今年一月,我心理清楚,二月底三月初阿里的实习招聘就要开始,因此我挤出中午休息时间、晚上下班后的时间、周末的时间,复习我以前积累的东西。面试
三月三号,人生的第一次面试,在看到杭州的电话时,那一刻的心情既忐忑又兴奋。在此以前,我并不清楚本身的水平在全部应届生中处于一个怎样的层次,在电话接通以前我已经作好了充分的心理准备,想象了各类被面试官吊打的画面。第一次面试持续了54分钟,面试官彷佛破有耐心,整个面试过程相谈甚欢。那一次的面试给了我巨大的信心,由于我清楚,我离个人目标更近了一步。 在接下来的一个月中,我陆陆续续接到了五次面试电话,每一次面试都是一次学习的机会,能发现本身的不足,在与面试官交流的过程当中也能了解到最新的技术、最佳的实现方法。算法
四月十四,记得那天刚替导师给本科生上完算法课,晚饭事后便收到的阿里的offer。当时的喜悦之情溢于言表,这么久的努力没有白费。但我内心也清楚,阿里的实习转正率向来很低,要想经过实习留下来也不是一件容易的事。因此在收到阿里offer以后的那晚,我从新规划了接下来的学习计划,将个人短时间目标更新成:拿下阿里转正offer。数据库
5.20,一个美好的日子,我怀着憧憬、忐忑、兴奋的心情走进了支付宝大楼,开始了我三个月的实习生涯。这三个月的实习让我学到了不少,我看到了天天的进步,也看到了本身的不足。这100天经历了太多的事情,有太多的体会,有空我再单独写一篇实习期间的感悟与你们分享。编程
9.1晚上11点,个人状态从『面试中』变成了『待跟进offer』,我会心一笑,我达成了人生第一阶段的目标。那一刻我没有太多的激动,在通过了2017年8个月的持久做战以后,这个offer早已在个人意料之中。设计模式
次日是周六,这个周末我给本身放了两天的假。虽然在杭州已经呆了102天,虽然支付宝大楼就在西湖边,但天天两点一线的工做,我并无去过西湖。那一晚个人基友得知我收到offer后便当即买票,坐了一晚上的火车来杭州为我庆祝。也托他的福,在这个周末我第一次游览了这座美丽的城市。
最后的校园时光,我给本身定了一个新的目标,这个目标也许充满了挑战、充满了艰辛与困难,但我想若是能达成,个人人生将会有很大的改变。在人生的路上,我还在奋斗。但愿与各位共勉。
在面试阿里的过程当中,博客帮了我很大的忙。并非说有博客在面试中会加分,而是写博客的过程能加深你对知识的理解,并且回顾起来也特别高效(毕竟是本身写的东西)。
我从研一开始便养成了写博客的习惯,如今先过头来,这两年我一共写了185篇文章,有22W的访问量,也很荣幸称为专家博主。个人博客如今已经成为我一笔最宝贵的财富,记录了我技术的整个体系结构,也记录了学习技术的心路历程。
可能不少同窗都有写博客的经历,但能长期坚持的少之又少。我想告诉你们,任何事情都贵在坚持。只要坚持21天就能养成习惯。有的时候对这件事缺少兴趣了很难再持续下去,但想一想本身的目标,咬咬牙坚持下去,养成习惯你就赢了。
个人博客通常都是看完一本书后的总结,我会把一本书中最核心的东西,按照个人理解把它们记录下来。每一本书我都会看三遍,第一遍是快速浏览,了解整本书的体系结构、做者的行文思路,知道书中重要的、不重要的内容,也就是要创建起全局观。第二遍我会精读,把那些我认为重要的内容挑选出来着重阅读、反复理解、吃透。第三遍阅读,每每会冒出新的理解,我时常有这种『书读百遍,其义自见』的感受。三遍读完后,我便按照本身的理解,把核心内容写成博客。因为是本身的写的东西,因此在复习的时候只要花上三五分钟通读一遍,全部的知识点又被唤醒。
本文是根据个人面试经验,为你们整理Java程序猿面试所需的知识体系。
互联网大厂都至关重视程序员的基本功,也就是计算机基础知识。一个程序员能走多远、爬多高,很大程度上取决于基本功是否扎实。对于应届生而言,大都比较缺少实战项目经验,虽然会有必定的项目经验,但这些课程设计、实验室项目的质量与公司实际的项目有着巨大的差距。所以,基础知识便成为面试考量的一大重点,并且基础扎实的程序员可塑性比较高,作什么都能比较容易快速上手。
计算机基础包含以下几门课程,相信计算机专业的同窗确定都已经学过。但互联网公司面试的考点可能和大家期末考试的考点有一些不一样,我都作了整理。
大学课程中的计算机网络通常都按照OSI七层参考模型介绍,然而因为互联网公司的特性,他们更加关注平常开发所涉及到的传输层和应用层,因此须要重点掌握传输层和应用层中所涉及到的全部知识点。
【考点】
【资料整理】
熟练掌握数据结构是程序员最最最基本的素养,在实际开发中选择合适的数据结构将极大影响程序的效率。面试官通常并不会直接问数据结构的问题,而是经过出一些包含数据结构的算法题来考察你对数据结构的理解程度以及在实际项目中是否可以灵活应用。你能够经过刷算法题来提高这部分能力,推荐《剑指offer》和《程序员面试金典》(注意是金典!)。不少公司的算法题库都选自这两本书。
固然,刷这两本书的目的并非让你死记硬背题目,题目变幻无穷,面试官能够随意改变。刷算法题最重要的是培养解决问题的思路和解决实际问题的能力。在刷题的过程当中要多多总结,再次强调,切忌死记硬背!
和数据结构同样,算法通常也经过具体的算法题来考察,你也能够经过刷《剑指offer》和《程序员面试金典》中的算法题来提升这方面的技能。但在刷这些算法题以前,你须要掌握几类基础的算法,并理解他们解决问题的思路(这才是最为关键的)。这些算法我已经在下面整理。
【考点】
【资料整理】
【考点】
【资料整理】
做为一名合格的Java程序员,仅了解如何使用Java是远远不够的。你可以熟练使用Java只能说明你已经成为一名合格的码农,可以利用Java实现某些功能。而公司做为盈利机构,须要用最少的资源实现效益最大化,这就须要程序员具有高质量代码的能力,而可否写出高质量代码取决于你对技术背后原理的理解程度。只有在理解Java背后的原理,你才能根据Java的特性,写出更加高效的代码。这在实际业务中是很是有价值的事情。互联网大厂服务海量用户,更加注重系统的性能,也更加注重程序员对原理的理解。
关于Java的基础知识和如何使用,这里我就不提了,随便一本Java书籍都有详细的介绍。这里我整理了Java原理性的知识点,这些知识点将会成为你面试的加分项。
【考点】
【知识点资源整理】
【考点】
【知识点资源整理】