新华移动传媒
这家中等规模的公司,坐落于杭州西湖景区,我很喜欢,可惜离下沙太远了,坐地铁要俩小时。
一开始是年轻小伙来面试我,这让我不那么紧张。他上来就问我项目经历,于是我把准备了很久的自我介绍砍掉头尾进行阐述。(不应该在自我介绍上花这么多功夫)
他针对我的三个项目来提问:
你认为最有难度的是哪个?对你的成长进步最大的是哪个? 我一通鬼扯。
由于我的几个项目基本和应聘的Java后端无关(我也意识到这是个大问题),所以他后来直接问我会些什么后端知识,他根据这些来提问。于是我开始给自己挖坑,我说“我学过Java基础、JavaWeb、JavaGUI、多线程、数据库,即将学到spring框架”。好,针对这几点,他问了很多问题……
“protected修饰符可以跨包访问吗?” 这个其实有点难,因为protected 关键字的可见性内涵不太容易理解。不像其他的修饰符,非常确定。
“什么是多态?可以举例说明。” 动态编译、父类引用指向子类对象。通俗的话:同一操作作用于不同的对象,可以产生不同的效果。比如你家有亲属结婚了,让你们家派个人来参加婚礼,邀请函写的是让你爸来,但是实际上你去了,或者你妹妹去了,这都是可以的,因为你们代表的是你爸,但是在你们去之前他们也不知道谁会去,只知道是你们家的人。可能是你爸爸,可能是你们家的其他人代表你爸参加。这就是多态。(链接:https://www.jianshu.com/p/68ddb5484ca2)
“什么是JVM” 我回答了Java虚拟机,保证跨平台性,不同的操作系统可以用同一段Java代码。但是他说应该是百度百科第一句话。“是一种用于计算设备的规范,它是一个虚构出来的计算机。”
他可能问的是JVM的原理 。JVM是Java程序运行的环境,同时也是一个操作系统的一个应用程序的一个进程,因此JVM也有他自己的运行生命周期,也有自己的代码和数据空间!
说到多线程,那就避不开 “线程池” 的考点。我光顾着背如何创建线程,疏忽了线程池。
“什么是线程安全和线程不安全?” 我直接说有序和无序,但是我后来想应该和资源共享有关。线程安全性问题跟外科医生做手术有点象,尽管手术目标是改善患者的健康,但医生把手术过程分成了几个步骤,每个步骤如果不是完全结束的话,都会严重损害患者的健康。如果一个医生切开患者的胸腔后要休三周假会怎么样?然而单线程的程序中是不存在这种问题的,因为在一个线程更新某对象的时候不会有其他线程也去操作同一个对象。(除非其中有异常,异常是可能导致上述问题的。当一个正在更新某对象的线程因异常而中断更新过程后,再去访问没有完全更新的对象,会出现同样的问题)
JMM(Java Memory Model),是一种基于计算机内存模型,保证了Java程序在各种平台下对内存的访问都能保证效果一致的机制及规范。保证共享内存的原子性、可见性、有序性(这三个也是多线程的三大特性,划重点,面试经常问)。
有哪些线程安全和不安全的集合? 我一开始还懵逼啥是“集合”,原来是集合类,比如HashMap,ArrayList,LinkedList。哎,出丑了。
“sleep和wait的区别?” 这个要从同步代码块synchronized和锁的角度回答,我疏忽了。(建议同时巩固一下yield和notify方法。)
“GUI老古董已经淘汰了”。 我说学一学原理总是好的。
“数据库的底层逻辑是什么?” 这题是真的难,我从来不管什么底层逻辑。
“你们项目建了几张表?” 我的回答是用户、店铺、商品一共三张表。
“说说你的优缺点” 这个问题几乎每个正规点的面试都会问,一定要准备!
说说你的职业规划 这个问题也是几乎每个正规点的面试都会问,一定要准备!
问了20多分钟,他觉得没啥好问的了,说“有点纠结”(猜测是我回答得太差了但是公司缺实习生???)好吧是我自作多情了。
然后是一位年长点的大叔来继续面试我(算是二面吗,我理解的二面应该要隔几天)。他简单问了几个问题就结束了……
“如何去重?” 我连“去重”是啥都不知道。查了一下大概有5种方法。
“冒泡排序、快速排序的时间复杂度分别是多少?”
顺便说一下,他俩碰巧都是金华老乡哈哈哈有缘。