面试经验思考
疫情期间,在家待着无聊,便出去寻找实习。一共沟通了两百家hr,投递出去了四十份简历,面试了六家公司,准备了近五万字的面试题。从小型创业公司,到中性企业公司,再到金融公司,再到360,我面试的过程还是挺精彩的。这里的面试题我就不进行解答了,都在我的另一篇博客里,那里面有我准备的所有面试题。
第一家
第一家公司是一家外包公司,当时正在做毕业设计,匆匆忙忙的接到了电面的电话,当时聊的时间很短,他就问了几个问题。
- switch里面可以是char么?
- switch里面可以是string么?
- java的基础数据类型有哪些?
- spring封装bean的方式有哪些?
- 这些bean封装有可以具体介绍么?
然后就结束了。因为当时我正在给一位学姐讲解毕业设计,所以迷迷糊糊的就答了,当是觉得很差,聊了十分钟吧,就挂断了,结果收到了offer。为什么呢?后来想想,因为我的简历写的好,哈哈哈。我当时简历有一个博客是把我知道的技术栈都写上去了,前端vue,后端springboot,正好和他们公司的外包项目相契合,所以就把我招过去了。当时在他们公司也写了几个模块,后来和公司文化有些不符,就算了。那么面试这次收获了什么呢,第一个是switch更多的是关注你对jdk更新迭代是不是了解,你的基础是不是扎实。java的基本数据类型,也就是你有没有关注过string,你的框架真的学过么,能不能跟我说出来一点。
第二家
第二家是一家创业公司,这家公司当时面试还挺有意思的,当时这家公司的面试官被我带跑偏了,并没有问面试题,当时我们更多的是进行了一个聊天,聊天过程中,他简单介绍了接下来要做的创业产品,然后简单对我的前进方向做了一个指引。就是说做一模块的项目,你要确定好你要呈现的样子,简单的一个模块,你一个刚入行的程序员能做,一个入行十年的程序员也能做,但是刚入行的薪资是3K,入行十年的可能是30K,为什么呢?因为做出来的效果是不一样的,工作经验更加能提高用户体验,代码的健壮性和可维护性更高,其实,无论入行多久,我们做的模块,所实现的功能都是差不多相同的,我们要想的是这个代码能不能更短,实现的功能更多,更安全。当时开出的条件是第一个月没工资,第二个月一天100。然后做的还是全栈,当时听到这里,基本准备抬屁股走人了,因为你们太穷了。。。。然后结束了。
第三家
第三家就是一家中性企业,当时直接扔给我一套面试题,面试题的方面很多。
- integer和int的区别?
- map为什么是有序的?
- servlet的生命周期?
- springmvc的运行流程?
- 手写一个递归
- mysql数据库三大范式
- linux修改用户权限
- 一个夫妇生孩子,第一个男孩,第二个女孩的概率?
- 屋里三盏灯,屋外三个开关,只进屋一次,如何判断三盏灯分别对应哪一个开关?
当时面试的时候并没有看任何面试题,就顶着个脑袋就去了,回答的并不好,但也能零零碎碎的回答一些,这些内容说实在的都是些基础的内容,当时的项目经理看我回答的不好,他就说了,你去大公司也是面试这些题,他不会问你哪些什么springboot框架,什么CRUD,他们都是自己写原生的。然后说,你可以在我们这里入职,但是你不能工作三个月之后就走,开学之后保证每周工作三天以上。当时想了想,公司不算大,没必要放弃学习上的事。所以也就算了。
第四家
第四家公司,就是很哇塞的了,是一家大型上市金融公司,当时去的时候两栋高楼屹立在那,光楼底下的保安就有几十人了吧。当时心里就想,这一趟来值了。经历了上一家公司面试题之后,我回去看了很多三年java程序员面试题,基本上大大小小都能说出来一点,我怎么能聊聊了吧。之后聊了十分钟,发现我不配。
- collection底下有哪些子接口?
- list,set集合有什么特点?
- map集合有什么特性?
- 这些集合怎么遍历?(都说一下)(到这之后就聊不下去了)
- map集合的数据结构是什么样子的?
- 链表的结构是什么样子的?
- 这些集合占多少个字节?
- 对于这些集合你用的时候遇到过什么一些什么什么问题,怎么解决的?
- 还有一个举了例子,是编译性错误还是运行时错误,具体的忘记了。
- ajax用过吧,可以把他所有的内容都手写一下么?
- mysql用过吧,左连接右连接有什么不同,会发生什么
- vue有哪些内容,将一个vue页面从上到下介绍一下?
然后看我左右连接都没说出来,然后就结束了,其实具体的死在哪里了呢,是因为那个集合,这个集合的东西有很多东西可以深挖。我只是在之前的那些项目中只存在表面,这个报错就换另一个,面向百度开发。没有自己的思考,有些内容是需要深挖的。其实不止是集合,还有那些java内容地址,甚至于一些前后端交互模式,等等。当时的那个架构师很好,跟我除了面试题之外聊了很多,更多的关注点就是不能停留在这些表面,我更应该去思考为什么是这样?学习要以兴趣为出发点,java这门语言并没有那么简单,想把他学好,可能需要很长很长的时间,当时我也承认了我在培训机构学的,他劝我的就是,你要喜欢这门编程语言,你要去研究它,像我当初工作的那些同学,他们有百分之九十都转行了。程序员如果不是热爱,那就真的会变成青春饭。因为我才大二的原因,希望我调整一下学习的方向。当时也是从这次面试结束后,我觉得我应该好好的反思下了,别再求快了,不能再往前学了,我更应该关注的是细节的把控,能把一个学好就行。
第五家
第五家公司是学长介绍的,也是一家外包公司。当时很多学长都在里面工作,其实在面试前也是觉得十拿九稳的,但是偏偏出现了意外,也充满着遗憾,具体是为什么呢?因为转天要进行360的面试,我梦寐以求的面试机会。我当时那天晚上,总结面试题总结到一点钟,从五点钟起床继续背,然后从java到vue再到linux,再到一些排序算法,挨个背。导致面试的时候,脑容量根本不够用了。面试题也挺出乎意料的。
- 介绍一下你之前写过的项目?
- 这些项目你有哪些模块可以跟我聊一聊?
- java基础的double是不是数据安全的?
- spring aop你对他的理解是什么?
- 网络协议tcp在那一层?
- 你还有什么想跟我聊的么?
为什么会凉呢?现在看来,这几个问题还要多简单啊?因为没准备项目,在第一个问题的时候,我没反应过来,我当时脑子里全是面试题,我准备的是什么?上面几家公司的面试题我都背的滚瓜烂熟,你突然跟我聊项目,我连我做了哪些模块都想了十分钟左右的时间,是真的想不起来了,具体做了什么更说不清了,连逻辑都反应不过来,然后后面几个也能简单聊聊,最后悔的是最后一个问题,我说的是没什么聊的了,当时要是跟他聊聊java基础,聊聊我准备的哪些东西也能成,但是说当时脑子真的转不动了,当时面试结束后还有一个简单的C语言作业,直接让同学做的,我自己睡了一觉,然后醒来之后就跟换了一个人一样,只能说这就是命运开的玩笑吧,我不配。
最后一家
最后一家公司,就是我梦寐以求的公司了,360,名副其实的大厂,我想重点说一下,当时面试的时候,一共准备了近五万字的面试题,无论你是问项目经验,还是问一下java,我都能跟你聊。自信满满,答得也挺好的。
- 你做过的项目有哪些?
- 这些项目的数据库你是怎么设计的?
- 说一说你实现时用到的技术栈和方法?(当时问到这里高兴坏了,这不跟上一家一样么,聊的可开心了)
- java内存模型有哪些?
- 堆和栈有什么区别?
- 内存泄漏和内容溢出你是怎么理解的?(这些我都准备了,当时给我高兴坏了)
- 多线程了解吧?用到了哪些?(说了乐观锁,悲观锁)
- lock锁了解么?(我看了一些,但很模糊,就说了一些锁的底层原理,希望挽救一下)
- 你大学学了哪些内容(凉,死)
其实除了最后两个,我觉得上面那些,都是很从容的回答的,当时以为这次面试十拿九稳了,可以准备下一下面试了,然后美美的睡了一觉,因为360的面试是持续三轮的,当时这些问题也并不是很难,我就以为就是简单了解一下,难得还在后面呢,然后就凉了。然后给的回馈是,一方面是技术原因,一方面是年龄原因。技术原因简单来说为什么呢?因为你没了解太多东西,(其实最后一个问题的时候,我就说了一个javase,其他东西都是自学的,所以面试官也不觉得有什么问的了,因为太难的我不会,其实,我准备了啊,五万字呢,但是我不能装X啊,跟大公司项目经理说你会什么东西,那不是找死么,人问什么你答什么就完了,何况学校就是没教呢)第二个问题是也是因为当时项目经理面试我的时候,因为我自身的性格是大大咧咧的那种,所以就笑眯眯的,贼开心,恨不得蹦跶起来。可能就认为我太小了,而且大三的课程那么多,你待不了多久就走了,就直接宣告我失败了。
总的来说,这些面试经历给了我很多经验,从小公司到大公司,从创业公司到上市公司,这些公司的面试题挨个刷了个遍,成长了许多,对java也理解了很多。