转行Java后第一次面试某鹅被坑,那些一毕业就进大厂的程序员,有哪些秘诀?
Posted java构架师
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转行Java后第一次面试某鹅被坑,那些一毕业就进大厂的程序员,有哪些秘诀?相关的知识,希望对你有一定的参考价值。
题外话
近期准备离职,转行Java,这次正式以Java的开发者进入面试,哎,发觉一大堆坑。其实面试主要进行了如下方面:
- Java相关知识
- java基础知识
- 开发者的基础知识 数据结构与算法、操作系统(这一面没有涉及)等
面试相关技术准备
由于我简历上还有ios相关的经验,还写了个熟悉c/c++,于是复习内容如下:
-
程序员面试笔试宝典
-
剑指offer
-
找的网上java相关的面试题目
-
看java源码: 这里准备有些不足,细节上很多答不上来。
Java的知识
1、面向对象的特征有哪些方面?
2、访问修饰符public,private,protected,以及不写(默认)时的区别?
3、String是最基本的数据类型吗?
4、Java有没有goto?
5、int和Integer有什么区别?
6、在Java中,如何跳出当前的多重嵌套循环?
数据结构
链表的是否相交 当时提供了几种解法,然后自己给自己挖坑了
如何判断交点
面试时都考察哪些
一、简历是否真实
这其实是面试第一要务,面试的过程其实就是看简历是否属实的过程,因为能到面试环节,说明这个人是符合要求的,不满足要求的早就被剔除了,如果他真的如简历描述的那样,100%会招过来,如果人人都如此,那就不需要有面试这种过程了。
需要注意的是这里的真实有三层含义:
- 如实描述自身经历,很多人只在一些大项目里做一个很小的螺丝钉,但简历里往往夸张这段经历。
- 不知道自己不知道,常见于简历里各种“精通”开头的描述,因为知识体系与视野的局限,明明只是了解很浅却夸口精通,很多时候他并不认为自己说的有问题,而是真的以为自己已然精通,有点井底之蛙的感觉。
- 简历里的真实要与你的期望相匹配,一门技术了解到怎样的程度才算精通,很难有定论,所以这里的“真实" 只能是候选人与面试官标准之间的契合,这种有主观运气成分,也许面试官水平不够错误判断了你,也不用感到不爽,面试何尝不是种双向选择呢。
二、技术的深度
技术的深度一向是面时光最看重的部分,当今任何一个技术领域都非常宽广,一个人要同时掌握那么多知识并且都深入几乎不可能,那都需要拼学习效率与工作年限了。而你曾经做过的东西,正在做的东西,是绝对可以了解得更深入的,一个对技术有好奇心,有技术热情的人,都不会仅仅停留在这个东西挺好用,而是会忍不住去探究它背后的技术原理,即便不是亲自去看源码,也会花点时间了解别人整理过的经验,所以单凭考察技术上的深度,就可以考察-个人是否对技术有热情 ,是否有技术好奇心等等这些很多大牛认为的所谓“优秀程序员的特征”。
之前曾看到过一句话:“一个人对他所做的事情了解得越深,他就能做的越好”。放在这里再合适不过了。
三、技术的广度
深度是有了,还需要广度吗?我个人的理解是:深度是必要条件,广度是加分项。同样的有技术好奇心的优秀程序员,也不会满足于仅仅局限于自己的一亩三分地,工作之余,也会想要尝试一些其它的领域和方向,因为投入问题也许不够深入,但很多领域知识你知道与不知道,对你个人知识体系的形成关系很大。
比如你要实现一个功能, 在你当前熟悉的技术领域上很困难或者效果不佳,在你就要放弃时你的同事告诉你,这用一个简单SqL语句就可以实现啦,为什么要搞得那么麻烦?这个例子虽然举得很蹩脚,但是我想意思大家应该已经明白了。知识越有厂度,头脑里的技术体系就越备,同样的问题,你就可以想到N个解,思考一下就得出最优解了 。
如果你听都没听过一些东西,就会经常说出“这个好难搞啊”、"这根本就不可能”其实有的时候真是知识的局限问题,所谓的从0到1难,也是这个意思。
四、逻辑思维能力
这也是一些面试官比较看重的一点,这里并不是指那些臭名昭彰的脑经急转弯问题,而是通过交流观察,判断一个人表达观点逻辑是否清晰,回答问题是否有章法,这个很难描述,但如果你细心观察,你会发现很容易通过一些简单的交流,就可以看出一一个人是否逻辑清晰。
有时候你会觉得某个人表达沟通很不错,其实不是沟通的问题,是他说出去的话,经过了他大脑的条理清晰的整理,让你很容易就能明白。这种习惯不是一朝一夕就能养成的,所以面试过程中这点装不出来。
另外一个人如果逻辑清晰,而且反应又敏捷,语速很快,那是大大的加分项,恭喜你,距离offer不远了。
面试前系统复习的重要性
我也已经做了好几年开发了,还记得刚出来工作的时候觉得自己很牛逼,现在回想起来也蛮好笑的。懂的越多的时候你才会发现懂的越少。因为如果你的知识是一个圆,当你的圆越大时,圆外面的世界也就越大。
工作将近8年,似乎一直都在救火式的学习。遇到问题,才着急忙慌的上网查,边学边用,这种方式诚然是100%学以致用的,但是这种头痛医头脚痛医脚的方式并不会对自己日后解决新问题有多少助益。
面试新工作时我们难道可以以此作为核心竞争力吗?
福尔摩斯的神探能力也许是通过破解一件件错综复杂的案件获得的,但是促使她破案的绝不仅仅是对犯罪现场的敏锐观察,他的推理很大程度上取决于他对某些领域的系统知识的掌握以及独到见解。处理问题的能力很重要,但是这个能力需要有专业及系统化的理论知识作为支撑。
不管是往深了学,还是横向扩展知识的广度,重要的是得找到那个圆心,然后以或大或小的半径去打磨围绕这个圆心的各种技能。这样,找工作时才能底气十足,才能有望在某一个领域成为专家。
面试需要具备哪些技能?
- Java基本功,这个是必备知识。如果说面试到时很少用,并不代表后面项目不会用到。
- Java基本知识也是要的。如果连Java基本知识都理解不深刻,那我估计想开发出一款好的软件也没那么容易。
- 面试的问题不常用或是比较难的,其实,说明面试官想对你做深层次地考核,答得上来是加分项。
- 面试官也很忙的,面试题大多也是网上找到。
- 有时候,需要的并不是标准的答案,而是看你的学习能力、知识广度、分析问题的思路、解决问题的技巧等等,这个才是面试官关心的。
面试复习路线参考
Java学习路线图
首先,对于没有学习方向,知识不体系的人,我把我工作几年整理的学习路线分享给大家,做一个借鉴作用,还不知道怎么学习的人可以直接照着我这个学习路线一个个的去学习,知识不体系的人可以参考下我整理路线的方式,总之希望能够帮到你们!
帮你在现在的基础上,重新梳理和建立Java开发的知识体系。无论是你短期内想提升 Java内功实力,突破自己工作中的能力瓶颈,还是准备参加Java面试,都会在这份资料中有所一些收获。
需要完整资料的点击这里即可领取
1、看视频进行系统学习
前几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。
我这里有储存一些视频的资源可以分享,有初级、中级、高级。有需要视频的到文末有直达获取地址
2、Java核心知识点系统梳理,提升储备
文档涵盖知识:
面试必问的:Java基础、高并发、多线程、分布式、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、mysql、RabbitMQ、Kafka、Linux、Netty、Tomcat等等知识点详细讲解及面试押题。
JAVA基础对应详细解析文档
Java多线程并发知识点对应详解解析文档
JVM对应详细文档解析
spring对应详细文档解析
数据库内容解析
微服务内容解析
Zookeeper内容解析
Kafka部分内容解析
RabbitMQ部分内容解析
说了这么多,这些技术该怎么学呢?这里博主整理了一整套VIP学习笔记分享给你们。都是花钱整来滴,不要说我小气哦点击这里获取完整笔记
3、读源码,看实战笔记,学习大神思路
“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”
所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。
Java开发人员都知道,阅读源码是一个非常好的学习方式,在我们日常工作中或多或少都会接触一些开源代码,比如说最常用的Struts、Hibernate、Spring,这些源码的普及与应用程度远远超过我们的想象,正因为很多人使用,也在推动着源码不断地去完善。这些优秀的源码中有着多年积淀下来的精华,这些精华是非常值得我们学习的,不管我们当前是什么水平,通过反复阅读源码能力能有所提升,小到对源码所提供的功能上的使用更加熟练,大到使我们的程序设计更加完美优秀。但是,纵观我们身边的人,能够做到通读源码的真的是少之又少,究其原因不外乎以下几点。
-
阅读源码绝对算得上是一件费时费力的工作,需要读者耗费大量的时间去完成。 而作为开发人员,毕竟精力有限,实在没办法拿出太多的时间放在源码的阅读上。
-
源码的复杂性。 任何一款源码经历了多年的发展与提炼,其复杂程度可想而知。当我们阅读源码的时候,大家都知道需要通过工具来跟踪代码的运行,进而去分析程序。但是,当代码过于复杂,环环相扣绕来绕去的时候,跟进了几十个甚至几百个函数后,这时我们已经不知道自己所处的位置了,不得不再重来,但是一次又一次的,最终发现自己根本无法驾驭它,不得不放弃。
-
有些源码发展多年,会遇到各种各样的问题,并对问题进行了解决,而这些问题有的对于我们来说甚至可以用莫名其妙来修饰,有时候根本想不出会在什么情况下会发生。我们选择各种查阅资料,查询无果,失去耐心,最终放弃。
无论基于什么样的原因,放弃阅读源码始终不是一个明智的选择,因为你失去了一个跟大师学习的机会。 而且,当你读过几个源码之后你会发现,他们的思想以及实现方式是相通的。这就是开源的好处。随着各种开源软件的发展,各家都会融合别家优秀之处来不断完善自己,这样,到最后的结果就是所有的开源软件从设计上或者实现上都会变得越来越相似,也就是说当你读完某个优秀源码后再去读另一个源代码, 速度会有很大提升。
既然阅读源码有那么多的好处,但是很多同学却因为时间或者能力的问题而不得不放弃,岂不是太可惜?为了解决这个问题,我给大家带来了这几份源码学习资源!
4、刷面经
如何刷题?这是很多现在面试者心中的困惑,我们都知道,面试前刷题是很有必要的,毕竟很多题目都有一定的共性,刷足够题目就能够做到举一反三,甚至在面试时,被问到原题,能够侃侃而谈,那么刷题如何进行呢?建议:最好找一些历年的面试原题,分专题来对自己进行训练。这里小编有整理2020年春季招聘一系列大厂的面试真题(附带答案),也有2021最新的面试真题。
以上是关于转行Java后第一次面试某鹅被坑,那些一毕业就进大厂的程序员,有哪些秘诀?的主要内容,如果未能解决你的问题,请参考以下文章