个人面试复盘
bg: 24渣本
面试岗位:Java开发实习(后了解到是用友二次开发NCC)
公司:一家规模比较大的外包公司
面试环节:两轮面试,第一轮为机试+面试(自带电脑做题,比较随意),第二轮为主管面(无技术考察)
机试:
2道easy算法+1道Java基础题+1道业务题
- 统计数组中所有元素的出现次数
- 统计字符串中所有数字、字母和空格的出现次数
- 写一个接口ltf,包含A()方法,写一个接口父类Par,也包含一个A()方法。写一个类继承Par父类,实现lft接口,并让A()先执行父类A()逻辑,再执行接口的A()逻辑
- 数据库查表,接口测试,用Postman测通,返回JSON格式数据
业务题我直接用了一个Spring Boot的小demo用MyBatis,但后面不知道哪里配错了,测不出来。不过面试官好像不太在意这些笔试的东西?
面试:
Q1. 自我介绍,我讲到了项目,面试官就直接问我项目了Q2. 你的项目做了什么?
Q3. 项目都是你自己写的么?这是你的毕业设计么?
A:有参考网上的,打算作为毕设。
Q4. 你中途遇到了什么困难?
A:评论模型设计,数据库表的设计。
Q5. 你觉得你的优点和缺点是什么?
Q6. 给我介绍工作内容,就是二次开发。
Q7. 回马枪,问我缓存是怎么做的?
A:Caffeine框架,(太久没有看项目了,忘光了),说是放在内存里(在地铁上才想起来他应该要问我Redis缓存,我哭死,当时完全不记得了)。放在内存里,数据有修改就清缓存重新获取(回答得好蠢,我的天啊)。
Q8. (微微笑)每次修改就清空缓存,性能有点低下吧?
A:尴尬笑。
Q9. 再次回马枪,说我刚刚第1题的代码,可能有点小问题(?您不是就看了两眼么)
面试官说我map.get()可能有点问题,回来看了看,果然。
HashMap<Object, Integer> map = new HashMap<>();我直接用map.get(obj),
如果使用map.get()去获取一个不存在的键(key),则会返回一个null值,因为HashMap允许null值作为键,所以无法区分是键不存在还是键对应的值是null。因此,在使用map.get()方法时,需要先使用map.containsKey()方法判断是否存在该键。这个应该用containsKeys,我直接顺手写了。
面试体验:
难度不大,体验良好(虽然我表现得不太好),面试官比较和蔼,很年轻。
自我评价:
- 对自己项目的描述过于简单。面试官凭简历可能难以判断你项目的难度,如果自己口述得比较简单,那么自己的项目可能会被轻视。但吹的天花乱坠,也无异于自取其辱。
- 没有get到面试官的点,他问我缓存,应该就是想问我为什么做缓存,缓存策略,这点很重要,但是我没有准备好。
- 个人觉得很重要的点--没有 "主动推动面试的进行方向"。面试官常常会问"你的项目做了什么"或者"你的项目中遇到了什么困难"这类较为开放的问题,我应该提前准备,在里面埋下一些暗线,说不定他会get到我的埋的暗线,进而询问暗线上的问题,这时我再回答我已准备好的回答(当然实际肯定不会那么理想)。虽然不至于让人眼前一亮,但把握住、预测面试的方向和节奏,至少不会让自己哑口无言或者慌张。当然,这种方法是基于面试官问出开放性问题或主动把面试的主动权交给你的情况下。
- 感觉自己表现得一般,应该寄了。
题外话:
之前投简历一个月连个面试都没有,直接给我整沉沦了,直接摆烂做了自己想做的事情和休息去了,学了学Docker,把没部署完的项目上线到服务器。期间没有看八股,没有刷LeetCode。大概两周后,项目给我改完上线以后感觉自己恢复的差不多了。准备开始继续投简历+刷题背题的日子了。重新投简历的第一天,下午投了大概几十份就直接约了这个面试,但是我基本忘得差不多了啊!而且只有一天时间复习,硬着头皮上了。这也是我的第一场线下面试(之前有一场电话面,寄了),不管结果如何,能从中获得实践经验也算好的。一个月前投简历的时候只投Java开发岗,被毒打以后,意识到自己在市场上毫无优势可言,只要是跟Java相关的都试着投了投,而且也放平了自己的心态。
#我的求职思考#