致广大实习生的一封信【java必问面试题+面经】

面试题在下面

GOGOGOGO!点击这里直接进入面经

GOGOGOGO!点击这里直接进入面试题
当你点进来,你应该是处于准备实习的状态,我写下面的这些,除了面试题还有我一些经历,我希望你能读完,如果看完没有收获,那就当做看小说,如果看完获益匪浅的话,给我点个赞就好。

各位大牛们勿喷,若有冒犯请回避

个人背景:
 java后端开发工程师,学历普通本科。在学校有参加过一两个项目,还参加过一些算法类的比赛,有一些算法知识。大四进行考研,国家线过了,但院线没过,所以没考上,无奈出来接收社会毒打,目前找工作的地方是在广州。

焦灼的开始
 此时此刻已经到了三月,这时候的我没有找过任何实习。大四的时候考研,考完差不多12月底了,新的一年的到来,也意味着春招的到来。但是由于学校有安排,我仍需花3个月的时间去解决学校安排的事情。所以把事情搞完之后已经达到了3月份了。

慢慢地“缓和”
 那时候已经到了3月中,对于很多实习生来说,已经找到实习并且在工作了,而我还在boss、拉勾上一直海投,并且我这时候并没有选择去背与看面试题,这为后来埋下了祸根。第一天的我觉得海投没有什么用,但是第一天投简历的结果是一家面试的公司都约不了,第二天我就开始了海投了。不过事情慢慢好转起来,约到了一家公司。那时候我的想法是,如果遇到自己不满意的公司,我就当做这是一场面经。后来,我陆续接到了几家不错的公司。这段时间里,我一共面了5家公司。至于过程没必要细讲。

我来说说我选择公司的一些小标准:

  • 在我眼中,氛围是第一重要的一个标准,当你进去一家公司,给你的第一印象很重要,如果你进去之后看到同事们交流融洽,除了工作上的交流还会互相聊天交谈开玩笑有一种开开心心的氛围,我觉得这家公司就挺好的了,这当做是幸福指数蛮高的,我认为进去之后工作开心才是重要的。当时我也有遇到一两家公司氛围不太好的,一进门灯光暗淡不明亮,同事们只是顾着自己的工作,死气沉沉的。
  • 工作时间中,大部分的公司工作时间是7-9小时左右,8小时是最普遍,当然!这要看公司,有些游戏公司是10小时以上,甚至不止(肯定也有),我对于工作时间的要求是,如果工作时间与薪水符合要求的话,就可以选择。
  • 看技术,对于后端的话,以我目前的认识水平是一些主流的框架,比如说是springcloud,springboot,还有一些分布式的框架,所以到时候需要你问技术面试官这一类的问题。下面我会继续提醒
  • 必须进去之后是搞java后端开发!这点非常重要。(我当时就没有考虑清楚,也为吃了点苦)
  • 能找尽量找IT公司,比如带有信息、科技、互联网等等字眼的公司。(因为尝试过,后面我也是后悔了。。这也是后话了)

3月份找工作的总结
 这段时间,太难了。错过了一家不错的游戏公司,不过是早上9点到晚上9点左右,大小周(所谓的大小周是这周周末休息2天,下一周周末休息1天),至于错过是因为看到是java服务端开发,以为是搞其他的,当时并没有清楚的认知,其实也是java后端开发。最终我选择了一家软件开发的公司。
 说来搞笑,我入职的第一天,我当天就辞职了哈哈哈哈。(牛逼不)主要原因是,进去让我搞一些无关java的东西,让我搞RPA,是什么东西你们可以百度。实习期间基本是搞这个了,当时我接触的第一天觉得真的不适合我,一是没有像网上那么多资料可以学习,只能要让师傅亲手教,但是师傅并不是经常有空,因此我耐不住,当天选择了辞职。所以这时候我更加坚定了自己的信念,一定要慎重选择,必须选择符合自己的,不能把我大学四年学的java抛弃掉!
 不过想来,这个是我的问题我的错误,因为当时面试的时候我没有问清楚,所以我再强调,必须要问清楚,公司与我们自己是双向选择的!
 这5家公司,我都收到了offer,面试难度不高,我甚至这时候自称面霸,还声称自己所找的面试题只要背了,基本技术面都能稳过!那时候超骄傲的我觉得接下来换工作是随随便便的事情,但是后来发生的事情让我不得不怀疑自己,也让自己这种不成熟的行为付出了代价。

焦虑的我
 所谓的金三银四,而我已经错过了金了,只能在银中寻找下一家入职公司。四月份的到来。我慢慢变得开始焦虑了,因为身边的同学大部分都找到了工作了,而我还在那里原地踏步。这段时间我也不停在海投,过程我也不细讲。面了5家公司,结果就是,我上面说的代价,只有一家过了。是的,这是我骄傲的后果,然而这一家公司开的薪水和福利都比以往都好。是的,我入职了。四月份焦虑的我,害怕错过了四月就再也没有公司招实习。遇到好的,也是搞java的,就进去了。不过这次我就做了一个月后离职了。。
 原因是,这家并不是一家真正意义上的it公司,所以前面我也说了,尽量找一家it公司。我这一家公司主要是搞其他业务,而我部门只是一个小小的部门,人数不超过10人,并且技术人员并不多,我进去的一个月主要是学习业务流程。细节就不讲,毕竟涉及一些公司机密。

总结
 至于这段经历,也是我一种不成熟的体现,后来我面试的有一家公司的主管跟我说了这个问题,我把这一月的实习经历写出来,不如不要写,因为这体现了我个人的不稳定。当时我写下去的想法是我能表现出我有明确的目标,当时及时止损,一个月,免得浪费公司精力与我的精力,趁早走就走。主管跟我说了很多道理。以下是他的一些话的总结:

你其实这个月根本是学不到东西,如果换做我,我会在这公司里面先利用3个月去学习熟悉这家公司的业务,将公司的项目各种模块都能熟悉,要非常知道哪个模块对应哪些功能,最起码你下次再找工作的时候,能把你实习做的事能完完全全说出来,而现在的你,就是浪费了这么一个月的时间,完完全全没有进步过。说白了你就是浮躁,沉不下来。并且离职这是不科学的,你想一下,你能负责一个完完整整的项目这种机会别人很少有,当你能把这个项目摸熟摸透了,你就比同龄人超越了很多了。

 除此之外他还给指明了我该怎么去学习,要发挥我的主观能动性,而不是当公司给你任务,你才去接触,你要先去了解!比如说springboot,现在你还没学习,但你要去了解,才能为以后接的项目能得心应手。这个主管是我面试了18家公司,唯一一个主管会跟我说这些的面试官,我十分感谢他,我也很感动。
 确实是这样,在工作的时候是很少给你学习的时间,你必须要利用你下班之后的时间进行充实自己。

五月的我,冷静下来了
 这5个月中,我面试了8家公司。其中有一家公司是我最好的同学引荐我进去,如果我技术过关,基本都能进去。我也很想跟我这个同学工作,也是一家游戏公司,是我最想去的一家公司。但是啊!即使我这个最好的同学不停的帮助,我也错过了这个机会,因为我技术不过关,是的,这是我的骄傲导致最严重的后果。做人真的不要骄傲!不过也通过这次,我慢慢地冷静了下来,把该懂的知识都去学习,把基础知识都去背,并且复盘。下面的面试题我会全部列出来。
 不过最后还是选择了一家适合我的it公司,现在我写得这篇文章的时候,我还没有入职,未来还不清楚。但是不会轻易离职了,因为经过刚刚那位主管给我说的道理,我必须要沉静下来去面对接下来的日子。毕竟你进一家公司,是不可能让你立即接触核心业务,并且你只是个实习生,肯定当你在实习期做的一切努力和付出之后,觉得你有能力才会慢慢让你接触核心。是的,无论是第一家,还是第二家,都是我的不成熟所造成的。

最终最终的总结,这段经历的总结!

  • 听我劝的,考上国家线,即使没过院线也给我选择调剂!不要管离家远不远,调剂成功了起码也是个研究生!过来人给你的忠告!找工作与工作的艰辛,体会了才知道读书多么好。以前不成熟的我就是想着算了,找工作。我希望你遇到我,看到我这一篇文章,并且你过了国家线但准备想着找工作的同学,相信我,听我劝的,不管什么学校的研究生,冲就完事!!因为有很多工作有门槛,必须是研究生,比如说大数据、人工智能等等。真的!!
  • 对于现在的我,我没有接触过SpringBoot,如果你能在实习前接触并在项目上使用到Springboot、SpringCloud,你会是一大靓仔!公司很喜欢你这种人才的。这是我吃亏的一个地方。
  • 还有重要的一点,现在的你,如果是遇上了秋招,并且也是在没毕业的时候,也就是刚大四,并且你没有选择考研。赶紧下一个拉勾或者boss直聘,把自己简历弄得好看一点。简历怎么弄我后面会说 能投什么字节跳动啊,腾讯啊,反正就各种大厂,能投就投!因为这时候是最容易进的!门槛不高,我是因为考研错过了这段时间,并且也没有任何人告诉我这事情。你实习经历是在大厂的话,你后面就算离职,到后面找工作会比平常的人学到的知识会更多,比平常的人更容易找到!毕竟进过大厂,这种差不多算是一种光环了!
  • 沉着与冷静是必须要的了,因为浮躁与不成熟的我,走了很多弯路。我希望你们能走少点弯路。选择公司不要急着选,必须要挑。
  • 不要骄傲。真的。你要相信,知识是学不完的,遇到各种面试题能记下来就记下来,不要看完我写得面试题就觉得够了,希望你面到了各种各样的面试题你能给自己记下来。或者在下面评论,给广大网友补充,我也会常常看一下评论,然后进行增添的。一起进步才是最好的!

我在广州面了18家公司,本科学历,薪水福利这方面我就不在这里说了,如果你想更加了解这种,你可以私聊我,如果我看到我会回复给你。但是建议我可能给不上,因为有时候建议有可能会造就成功,但也会害死人。

谢谢你能看完我这段经历,希望你能听进去我的良言。
如果当你看下面的面试题的时候,看不下去了,再回过来看看我的经历,希望这段经历就当做我在陪你共同努力的一样,加油哦!





面经

简历如何写?
对于程序员,简历无需写得花里胡哨十分漂亮,很多模板你可以在网上找。基本都是可以的。
需要注意的点

  • 个人信息第一位,含工作地点与面试的岗位、毕业院校、专业
  • 掌握的技能也要写在前面,比如熟悉xxxxx各种各样的技术
  • 各种参赛与各种证书与奖励奖学金(四级)
  • 项目经验,最少也要写两个!

有必须要注意的一点就是自我介绍。无论哪个面试官都可能让你自我介绍,这自我介绍的时间大多数面试官是很少详细去听得,主要是为了在你自我介绍的时间里浏览自己的简历。所以自我介绍大概控制在1-2分钟就好,自我介绍你可以编,无所谓。主要从我来自哪个学校,哪个专业。我性格方面上是怎么样,我大学干了啥~参加学校的什么活动,跟人交往怎么样,反正你要体现出你是一个正常人!哈哈哈。就是会跟他人交流,而不是让他觉得你自己是一个独行侠。
有一个区别就是面对技术面,注重讲的是你大学干了什么技术上的事,做了什么项目等等。面对HR的话,多讲一些自己大学参加什么活动,当了什么职务,让她觉得你是个开朗活泼的人~

投简历过程我就不说了

关于面试流程

  1. 笔试或机试,99%的公司都有笔试题,30%会有机试,机试我尝试不多,关于机试其实就一些算法题,我本人有参加过一些算法类比赛,所以都没有问题,如果你没有算法基础的话,建议你去力扣网刷题,或者洛谷网刷题,不要刷一些特别难得,刷一下基本的,比如说利用集合框架搞出什么东西这类问题。笔试其实大部分都是在牛客网(也有牛客的app)上抽取出来,建议每天20道,并且复习昨天的20道,并且要有一个错题集(牛客会提供给你)。有时候也会有手撕算法的题目出现,这类题目就像机试一样,只不过是要你写出来而不是打出来。还要刷一下网上的数据库语句怎么写等等的。笔试题肯定会有数据库语句,给你一个场景你要用数据库查询出来各种各样的数据,你必须要会!
  2. 当你通过了笔试,技术面试就来了。技术面的话问一些java的基础,还有框架知识,但是里面不会问的太深,你要记住你只是个实习生而已!不过如果你能答出来,肯定无疑是一个加分项!下面面试题我也会提及一些关于框架的知识点,但是不会很深入也不会很详细。并且你记住一点,对于一个知识,单纯去背面试题,如果面试官再深入去问你,他就会知道你是真的了解还是单纯地去背面试题,所以我给你的面试题并不是让你去背,而是带着这个问题去了解与熟悉,懂得转化自己的东西才是最重要!

当技术面试官问完了,大多数会问你:你还有什么问题吗?
这时候我建议你可以挑一两个重点来问一下!还有注意的是,不要问什么薪水上下班福利啥的这种的,因为你要记住,面前的是技术面试官而不是HR!
 1.请问一下,我进来之后是有专门的人负责带我的吗?
 (这个问题就是一个试探,看面试官的态度怎么样,因为实习生进去肯定是有人带的,可问可不问)
 2.再问一下,贵公司现在使用的技术是什么?或者说目前的主要业务是什么?
 (第一个问技术才是重点,第二个问主要业务是为了提醒面试官你可以结合一下公司的业务来回答这些技术用在哪些业务上,还有一点,如果你面试一家公司,每一家公司你都特意去了解他的业务的话,实在太累了,除非这家公司你十分想进,才去特意了解,其实你面试前,就去拉勾和boss直聘上看一下公司简介就行了,留个印象)
 3.如果我有幸能进入贵公司,那接下来我是被安排一些关于java后端开发的事情吗?
 (目的是要知道自己进去是干嘛的!你这么问当然是让面试官知道你是希望继续往java后端继续深造)

 最后的最后,你有什么问题就自己补充吧,大概我就想到就只有这些,并且最好问1-2个问题就够了,3个也可以,4个也可以,但不要太多。

  1. 按道理来说,技术面完了,接下来会是HR的面试,但是也有很多公司有出现一种情况就是再来一次技术面试,证明这家公司是很重视技术的,这时候你可以考虑一下该公司,毕竟两轮技术面后进去的人,技术肯定杠杠的!
  2. HR面试,就问一些基本的问题,什么你住在哪里啊。等等的,无关紧要的。但有一些问题还需留意。如:

1.如果公司让你转方向,你愿意吗?(我先说回答思路)
 首先我是愿意的,但是我现在接触了java特别长的时间,如果让我在java上给公司贡献的话,这可能会更加体现我的个人价值。其次,我愿意转方向,我希望我转方向的时候,公司能给我一些学习的资源或者希望能有该方向带我的人,这样我会更加轻松地转方向。
(HR考验的是你是否愿意服从公司的安排,一开始就回答愿意,后面再说我愿意,这就是为了表明我服从安排,但是服从安排还是有条件的,比如我说的资源和有人带等等)
2.你觉得你有什么缺点和优点?(我先说我的回答,你参考参考)
 我在优点上呢,是一个比较爱说话的人,就像是一个开心果一样。这就意味着我常常能保持乐观的心态,积极进取。缺点的话,我个人觉得自己不够细心,也就是粗心啦。比如说我点外卖的时候偶尔会忘记备注,但是这仅仅在生活上的,目前为止在工作上没有出现过粗心的情况。
(优点你自己补充,随便说!缺点你只能说自己一个缺点就够了!别太多缺点,并且你要学我这样婉转,这种缺点很少甚至不会在工作上出现)

我说一下HR面试的主要留意的点就是:她考察的是你一些应变能力、表达能力、与人交往的情况、是否是个正常人!!
还有一些无关紧要的问题,比如说你接收加班吗?你无脑回答接受就行了。我跟你说,一个IT公司要是赶项目的话,是肯定会加班的,平时也很少出现加班这种情况,也要看HR怎么说他们公司的情况。毕竟面试是为了通过,通过了才有选择!接收到Offer才是重点,去不去是另一码回事。

5.HR面完大多数就完了,有时候也会出现HR面完还要老板或者主管面,最后这种面试基本也就是聊聊天,画画大饼,给你一点建议。我之前遇到过一个就是,老板给我的建议是:他认为我种性格不太适合当程序员,不应该整天呆在工作室打代码,建议我转实施工程师,让我多点与客户交流比较好。这种情况让我怀疑了自己很久,审视了自己很久,至今也没有给自己一个答复,也得不出一个结论出来。但是我想到,以后转了实施就转不回来技术了,但是技术就很容易转为实施。所以目前我的选择是技术。(各位大神有建议的话,可以评论,让我参考参考一下)

我的经历总结
其实最长的一次是,我技术面试面了3个小时,这是我最长的一次。所以注意的点是,你必须备好一瓶水,这一点非常重要!虽然很多公司前台小姐姐给你装一杯水,但是这是不够的!自己备一瓶水是非常重要!因为口干舌燥绝对会影响你思考能力与回答能力的!
面的最多的一次是面了6次。过程是这样:笔试+技术面试+HR面试+经理面试+Boss面试+主管面试+hr面试 为什么这么长,是因为当时就建议我转实施,让主管给我介绍,实施是干什么,让他了解我的性格,其实到了后面基本不会问技术的事,大多数给你情景题让你回答。
所以我强调的是!必须要带一瓶水!因为有次我没带水,导致我想去的公司没去成,当时状态十分不好。


面试题

笔试题不会太详细说,希望能看到题目你会亲手去查,至于查到什么程度和学习的方向我会给出来。加粗的就是知识点。我打出来的或者画出来的图都是我笔记本上记下来的,并且这都是面经,也就是都有面试官曾经问的题目,必须重点掌握,并且由于是我个人写或者抄网上的,肯定是不可能完全详细,也不一定是完全正确。有错误可以及时提出

!!!!!!!!!!!!!!!注!!!!!!!!!!!!

很多知识我都是网上找的!并且有很大一部分是从下面这个网址来找出来的。但是这个网站太多面试题了。我背不下来,只能背重点。如果我下面记得完整与详细。你可以去这个网址看!

https://thinkwon.blog.csdn.net/article/details/104390612

!!!!!!!!!!!!!!!注!!!!!!!!!!!!

1. JVM的体系结构
关于JVM的各种知识,我个人建议去看一下狂神的视频,不会花很多时间,收获也很大,记得要记一下笔记。
其中也包含了类加载器双亲委派机制JNIJVM各种区的作用以及存储的东西各种知识点,视频上会有讲。

https://www.bilibili.com/video/BV1iJ411d7jS

看完之后其实还不够的,百度一下什么是可达性分析,这个可达性分析要跟视频中引用计数法来比较。
除此之外还要看一下G1垃圾回收器和CMS垃圾回收器

2. 一个对象的实例化过程,我笔记上就记录了这一个图。
在这里插入图片描述

3. 父类/子类初始化顺序
在这里插入图片描述

4.this()与super()的区别
super()在子类中调用父类的构造方法,
this()在本类中调用本类的构造方法,
其俩都要放在构造方法的第一行,这就意味着不能同时出现在同一个构造函数里面,除此之外都不可以在static环境中使用。
从本质上讲,this是一个指向本对象的指针,然而super是一个关键字

5.说一下HashMap的实现原理?
说一下 HashMap 的实现原理?(笔记本记下来的,直接拍照),字有点丑,但是应该能看得到吧哈哈哈。给我化红线的是必须要会说出来的!其他可以补充。
在这里插入图片描述
6.ArrayList与LinkedList的区别?ArrayList与Vetor的区别?
这个问题是超级高频!!!详细的肯定是要你自己去了解了!
在这里插入图片描述
7.线程与进程的区别?
在这里插入图片描述

8.事务的ACID了解过吗?
在这里插入图片描述
9.什么是死锁?为什么会有死锁?怎么预防死锁?
在这里插入图片描述
10.事务的隔离级别
在这里插入图片描述
11.抽象类与接口的区别
这个我在笔记本上记得比较潦草,这个问题必须要会!也是高频!网上也有一堆资料。注意的一点是,很多人都搞混,之前我面试的时候有个面试官就说错了。
我说抽象类是可以有构造器的。
他反问我:你确定?抽象类是不可以被实例化的,为什么会有构造器?
我大概是懵逼了!好像他说的对,我突然就怀疑了一下自己,然后我就跟她的步骤走了,后面回来查一查发现抽象类是有构造器的,接口是没有的!记住!哈哈哈。至于为什么可以有,并且有构造器的作用是什么,你去百度一下~

12.重写与重载的区别。
这个题目大多数都是笔试上出现的,也会问。反正就是高频!修饰符那里答不答都无所谓,反正知道关键就行了。
在这里插入图片描述
13.Java中常用的基本类型有哪些?
这个是十分十分基础,并且有些面试官是会问的。记住是八个!并且不要把String说出!如果你说了String出来,会体现你的基础很差的!
八个!八个!八八八!
byte char short int long double float Boolean
除了这个,我建议你再百度一下这8个对应的字节数多少你也要看一看,能记就记!

14.Java中常用的关键字
这个问题随便答,大多数出现在笔试题里面。
你看 抽象类与接口就有四个了 abstract extends 和 interface implement
修饰符就又有四个了 private public protected default
还有啥 static final这类的 百度一大堆。看一眼就好。

15.什么是反射?什么是多态?什么是封装?什么是继承?
这学java都必须要先背的三大特性,封装、继承、多态。
其实关于这几个问题,我建议你去百度然后用自己的话写下来,自己理解是最重要的!因为重要,所以我不建议只看我的笔记
以前有一次我笔试的时候,看到题目写:OOP的三大特性是?
当时我傻了,因为我不知道OOP是啥哈哈哈哈哈 百度之后才发现OOP是面向对象编程的意思 笑死我了 发现自己见识还是太少了。
在这里插入图片描述
在这里插入图片描述
继承 你百度把 一大堆!(博主懒了)

16.谈谈你对Spring的理解?
面试官问你这个问题就很友好了。你直接无脑怼 IOC控制反转 、AOP面向切面编程、DI依赖注入的意思就行。

17.你有了解过这些框架(Spring SpringMVC Mybatis)的底层原理吗?
我的回答:没有。但是我有次在视频上看到一些关于他们的一些底层,了解过关于SpringMVC的一些原理,是关于dispatcherServlet的底层原理。
(害!你要记住你只是个实习生,要是啥底层原理你都去了解,要死要活了都。你可以说你没有,但是你要把你能说的都说出来,就是尽量保持着我虽然不是最好,但是我还是有一点好!)
在这里插入图片描述
当时我就把这个说出去了,不知道答得对不对,反正所有面试官问我的问题,我都怼这个出去。

18.HashTable与HashMap的区别?
关于这个问题,我希望你这时候可以去主动了解一下线程安全的另一个Map,是叫concurrentHashMap。这是关于JUC的,JUC的到了最后我建议你去看一下视频。这也是狂神的一个JUC视频。必须要看!

https://www.bilibili.com/video/BV1B7411L7tE

在这里插入图片描述

19.什么是索引,索引有哪些类型。
什么是索引的话,我建议你去百度一下!还要百度一下添加索引之后有什么优点。你也可以在我一开始给你的面试题网址上找。
https://thinkwon.blog.csdn.net/article/details/104778621
在这里插入图片描述

20.创建索引的原则?
在这里插入图片描述
21.你有了解过什么设计模式吗?
哇丢,跟你们说,这个问题实在牛逼。这个问题面试和笔试经常出现!但是笔试的时候那个填写空白的地方死抠死抠的,很小。所以我认为你不需要把所有设计模式都背下来,也不需要全都回答。你就回答:目前我还在学习设计模式,但是目前为止我最熟悉的是单例模式和代理模式。至于为什么我选择单例?因为简单啊!懒汉饿汉!代理是因为spring的aop有涉及到。
所以你要做的是去百度单例模式和代理模式或者其他你比较熟悉的模式。其中要求!必须要懂手写双重检查的单例。 注意一点就是,有一个枚举类实现单例模式,这个一定也要去了解并且学会写。还有代理模式动态代理中的JDK代理和CGLib代理
至于怎么学习?嘿嘿 还是推荐你看视频。B站一大堆!
在这里插入图片描述
22.spring使用的哪些框架?
这个问题也要重视,由于我的笔记太潦草了。还是百度一下去学习一下吧~

23.BeanFactory与ApplicationContext的区别
这个问题我只被问过一次,你记在笔记本上记下来,到时候留个心眼。

24.依赖注入是IOC的实现方式,那么有哪些注入方式呢?
1,接口注入 2.Setter注入 3.构造器注入
我也需要你去百度。因为只会说出这三个是不行的,要知道到底是怎么注入的。接口注入不用太深入了解,因为现在已经抛弃了,所以你可以将问题变成:setter注入与构造器注入有什么区别?

25.Mybatis的工作流程?编程步骤?
这个问题我没被问过,但是我觉得还是要了解一下,我认为这个过程可以应付上一个我提到的问题:你有了解过SSM的底层吗?你可以把这个工作流程说出来一下,反正多说无妨,甚至让面试官觉得你肚子很有东西。当然,我给的只是一些大的过程,至于深入的话,你可以百度一下。
在这里插入图片描述

26.看图(完了 博主越来越懒了)
在这里插入图片描述
27.Mybatis的二级缓存有了解过吗?
这个问题我印象深刻,因为第一次被问的时候我不知道,后来我记下来之后,随后的面试被问到了。
啊啊啊啊字太丑了!你们看不懂还是建议你们去百度一下吧嘤嘤嘤
在这里插入图片描述
28.SpringMVC的工作流程有了解过吗?
我把别人的图画下来了,所以我给原图给你们看
在这里插入图片描述
出自这里的:这里也有一些SpringMVC的题目
https://thinkwon.blog.csdn.net/article/details/104397427

29.equal与==的区别
哇丢,这个问题,我面了18家,起码有10家以上要么笔试有,要么问题会问。这个你百度吧。我只记下来问题,因为这个很简单,只要百度看一下,面多了就会记下来了。

30.有了解过分库分表吗?
去百度一下,然后有水平分表和垂直分表,建议结合案例去理解。到时候被问到的时候,要结合案例说出来。

31.JSON文件存取有什么好处和坏处?
如果一个字段有多个列表和状态,存储成一个字段的话,后端方便以数组形式操作数据,增强可读性,并在查询时候减少很多字段的查询,提高性能,但是代码可维护性变差。

32.HashMap,TreeMap,LinkedHashMap的区别?

33.并发编程的三要素是什么?如何保证多线程安全?
在这里插入图片描述
34.什么是并发、并行、串行

35.为什么我们调用start()去执行线程,而不直接使用run()?
这个问题很经常问,无论笔试还是面试。这个问题可以编程:start()开启线程与run()有什么区别?
start方法启动线程,是真正实现了多线程的运行。而run方法知识一个普通方法而已,如果直接调用run方法,程序依然还就只有一个主线程,也就是run方法实现不了多线程的执行。
百度!

36.线程中的生命周期与五种基本状态
新建、可运行、运行、阻塞、死亡
细节一点的话 仍需你们百度。。。

37什么是悲观锁与乐观锁?
38你有了解过锁的东西嘛?

这类问题,我直接上个图,你们看。有一说一,悲观锁、乐观锁、自旋锁等等,反正这个图出现的所有锁你都必须去了解,因为这是基础!
并且如果你面试的是一家游戏开发的公司,图就必须要滚瓜烂熟。还有关于CAS机制,AQS是啥
在这里插入图片描述
39.锁升级的过程?
我希望你在看这个问题的时候,你要把之前我给你推荐的JUC视频看完。
在这里插入图片描述
40.为什么volatile能保证可见性

41.TCP与UDP的区别?
在这里插入图片描述
42.TCP的三次握手与三次挥手
这个问题也问得挺多的,百度,然后背下来,什么确认序号怎么发的过程也需要去理解。

43.Cookie与Session的区别?
关于这个问题太多东西问了,但是你要知道这两者放在哪里的不同
我给他记忆技巧 cookie是放在客户端 session放在服务端
cookie开头字母是c -> client session开头字母是s-> server
还有怎么验证登录与保存登录状态也要会!
因为面试官有可能会问你一个登录的问题:
如果我每次登录都需要查询数据库,岂不是很麻烦?有没有不用查询数据库也能登录的方法?
这个就引出一个JWT的东西,建议百度去浏览一下,留个印象。
如何判断是同一会话?

44.有了解过数据库视图吗?
45.有了解过数据库的游标吗?
46.有了解过数据库的存储过程吗?

47.执行sql语句的时候,数据库干了啥?
这个过程你也要理解下来,并且背诵,其实很有数据库优化都在这里面优化的。这个过程你要是能说出来,就是我写得那些字背下来并且说给面试官听,这肯定是一个加分项。
在这里插入图片描述
48.ISO七层模型你有了解过吗?
这个就是网络7层,背啊!这个我没去特意了解过,这个我是死记硬背坑下来的。对应的序号就是对应的解析。有可能不对,但是我已经把重点的弄出来了,你去百度一下,你会发现每一层都一大堆东西。。我觉得面试不要这么难为自己。。
在这里插入图片描述
49.HashTable与concurrentHashMap的区别?
在这里插入图片描述

50.copyonWriteArrayList有了解过吗?
当面试官问到关于List的线程集合你有了解过吗?
你只会打一个vector就显得你不厉害,所以再回答一下synchronizedList,但是呢这个又不太好,用copyonWriteArrayList好。这几个都保证了线程安全
在这里插入图片描述
51.Spring中Bean的生命周期有了解过吗

52.Spring如何保证线程安全的

53.String Stringbuffer StringBuilder有什么区别?
这个问题真的牛逼了。也是非常常问的问题,
在这里插入图片描述
54.你有了解过Java集合中的扩容吗?
这个问题你需要百度一下,我给的方向是,你要知道每个集合的扩容因子和加载因子是怎么样的,还有的是他们都怎么扩容的
比如vector 加载因子是1 扩容因子是原容量的1倍 所以 10-》20
所以你要去了解 ArrayList set hashmap 等等这之类的框架

55.数据库中的死锁
这个被问过几次,因为这跟线程的死锁场景有稍微不同。
在这里插入图片描述
56.数据库的三大范式
这个一定要回!被问得挺多的!

57.Linux如何查看磁盘内存?
百度把,其实有好多Linux常用命令也要会。但是问我最多的是这个,还有问如何找一个文件 find ./ name ‘*.log’ 这是找出日志文件
还有时候会问压缩解压 和free 查看内存状态。

58.有多少种创建线程池的方法。
这个问题我相信如果你看了之前我给你推荐的狂神JUC视频中,线程池,你就会懂了。三大方法与七大参数。

59.SpringMVC有哪些主要组件?
你懂刚刚的那个执行流程,基本无敌了,这肯定也能答出来。

60.索引失效的几种情况
这个问题建议你是在面试官中问到:你有了解过索引吗?
你可以将这个知识点也答出来

61.数据库中MVCC多版本并发控制
这个我没被问过,但是你去了解一下,到时候可以说出来。

62.有了解过IO流吗?
对于这个问题,你直接百度查
如何将字符串写入txt文件中
如何读书txt文件中的字符串
将两个案例铭记在心中,你可以回答了。不要回答得太详细。

63.你有了解过网络编程吗?
我说:没有。
?????
是的,我真没有了解过,我之前学习只是打过一些案例实现通讯,但是基本都忘记了,由于这个问的也不算多,也不算特别少。但是本上我都说我很少了解。
所以把,有时间去了解一下???

64.对于Sleep 与 wait 有了解过吗?
对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。
sleep可以在任何地方使用,而wait只能在同步方法或者同步块中使用。
sleep,wait调用后都会暂停当前线程并让出cpu的执行时间,但不同的是sleep不会释放当前持有的对象的锁资源,到时间后会继续执行,而wait会放弃所有锁并需要notify/notifyAll后重新获取到对象锁资源后才能继续执行。
Thread.Sleep(0)的作用,就是触发操作系统立刻重新进行一次CPU竞争
注意,设置了超时时间的wait方法一旦过了超时时间,并不需要其他线程执行notify也能自动解除阻塞,但是如果没设置超时时间的wait方法必须等待其他线程执行notify。

线程上的扩展
这是关于CAS ABA的问题
https://www.cnblogs.com/549294286/p/3766717.html

至此,这是我18家面试的公司的面经。学习了差不多3个月,将这些知识补的补,了解的去了解。
这里我敢打包票,希望你能看完这些面试题,反正这些面试题能应付一些中小型企业了,如果是大型的话肯定远远不够的。

如果你看完了,是时候可以出师了!
为师再教你两招必杀技
第一!你面试的时候,你要给自己一个心理暗示:我在跟我未来同事聊天天而已~
这样去除你的紧张!

第二!面试的时候,你不要特意让面试官去问,你要懂得扩展并把自己知道的说出来。比如说,面试官问:你有了解过JVM吗?
你说有,然后你把JVM里面的结构说出来,然后你不要停!你继续说垃圾回收差不多都是在堆里面进行的。然后巴拉巴拉。完了之后你也不要停!将新生代、老年代、永久代也巴拉巴拉说出来!完了也不要停!说一下其中的算法,比如什么复制算法和标记整理算法等等!能说就拼命说!说到面试官不会问你。
当你说完,面试官会觉得,哎哟这小子可以噢。行,那关于JVM的我就不问了,问其他。

以上好多知识我也是从网上找的知识。有一些笔记有可能出现问题,希望你能指出。我也希望你们能在评论区补充面试题,遇到频率很高的题目。我也希望你们能在评论区报报喜讯,终于拿到心意offer~
共同进步才是最重要的!拜拜~

资料整理
https://thinkwon.blog.csdn.net/article/details/104390612
这个网址里面包含了很全的面试题,你如果在我文章中没有写出来的,可以在这里面去找。
B站搜索狂神说在这里插入图片描述

在这里插入图片描述
都看了!基础也可以看一下,但是如果你有基础就没必要再看了。

  • 17
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值