说下前提,15年本科毕业,工作两年多。由于个人原因,需要找工作,一月期间面了五家企业,都拿了offer,最后选择去了蚂蚁金服,级别P6。朋友在问面经。所以写下总结,说下这一月份找工作的感受。
几场面试下来,觉得心态很重要,我把每一次面试都当做一次同事之间的技术交流,而不是单向输出,背标准答案。面试的时候要都是自己一个人在说,没有回应那也是蛮累的,回答问题时,先要弄清面试官提问的本质,而不要盲目去做答。基于正确的理解再去作答是最基本的前提。我要是不清楚问题,会把问题按照我的思路复述一遍然后再去确认,得到回应再去作答。我回答问题时,一般都会用自己的理解去回答问题,如果在工作当中刚好用到,则会结合实际案例来说。比如问我责任链模式,我在面试的时候不记得这个设计模式的标准定义了,我回答说,责任链模式常用于拦截器的设计中,比如发出一个web请求时,需要做权限控制,如果没有登录,则不允许登录,这个时候就是使用责任链模式进行设计的,请求通过所有链上的处理器进行处理,处理通过交给下一个处理器,不通过,直接返回。我知道这个设计模式常用的应用场景,但标准定义现在确实想不起来。
个人觉得面试需要考察的东西,一般都是看你掌握技术的深度,或者你掌握技术的广度。因为面试的时间就那么多,我记得最长的一次电话面试是一个半小时,前面一个小时,聊了些技术加业务,后面半个小时基本聊聊其他话题了,比如平时怎么学习的,对于以后的职业规划有啥计划吗,觉得自己目前最有优势的地方在哪里之类的。当然要问的技术基本都是按照你简历上来的,比如你写精通数据库,那么你就要做好被问的很底层的准备,所以如果不是在某一方面特别有把握,切记不要乱用精通。
面试都会基础技能的掌握情况,这个一般放在一面用于筛选。还有对自己所做业务的熟悉程度,从业务讲解考量你的思维能力和设计能力。在几次面试中,一般问题都是从浅到深。都会碰到的是并发相关的问题,如从Hashmap开始问起,问你是否了解hashmap,是否看过源码,源码的细节,然后延伸到并发,比如线程安全的map有哪些。一般都会逐步问下去,或者觉得你掌握的程度可以,或者是你回答不出来了。能聊的多聊点,不能的赶紧结束,不要强行装懂,不然结果很坑爹的。
通过基础面试后,会考验你业务的理解及通过业务了解你架构设计能力,基本都是叫你挑出个项目,叫你讲解项目,讲解项目时,一般都是从大到小去介绍,为什么要有这个系统,这个系统解决了什么问题,是怎么解决的,你负责的东西承担什么角色。然后在板子上把整个架构画出来,边画边讲解,我没有整体负责过一个项目,相信很多人都没有这个机会,但是平时我会根据我自己模块来慢慢拓展边界,来达到了解系统的目的。会根据你画的架构图来提问,比如这个模块为什么这么设计,好处是什么,有什么可以改进的地方,有什么地方可以继续优化的,这些问题如果对自己做过的项目有了解的话,基本都能解答,解答思路碰到的坑是哪些,是怎么解决的,解决后有什么感想。每个人在做项目的时候总会碰到各种坑,如果没坑,那要不说明你很牛逼,要不说明你很傻逼,作为普通同学,还是好好积累自己碰到的坑,及时深入总结,这样就有东西可讲了。
在面蚂蚁金服时,有次发给我个题目,叫我在规定的时间内,写好代码,然后回传评审。题目大意是叫我设计一个高可用的转账接口,我理解是考察我对需求的理解和代码落地能力,及编写代码的规范。因为平时写接口就有对接口进行编写注释的习惯,所有在编写代码时,规范性没问题。我把把自己的架构设计体现了出来,然后落地只完成部分,没时间全部完成,但是对应的部分都会加上注释。做这种在线编程时,其实也就相当于接一个需求,然后分析落地,首先要保证自己对需求理解的正确性,然后再是提现自己的设计能力,编码能力及规范意识等。
至于HR面,每个公司都有些不一样,主要是考察你综合素质,比如你为啥离职,抗压能力如何,接触一个新团队新项目时,怎么去熟悉融入,自己未来的职业规划等等,这些可以提前去准备,没准备到的看临场发挥,不要过大的吹牛就好。还有会问到你期望薪资,这个,我也不知道怎么去说,所以不写了。
找到能让自己发挥最好的心态很重要,我把每一场面试当做是和面试官的交流,像和同事间的相互交流,交流能在一个频道上的,能聊的来,一般都能表现不错。面试是相互选择的过程,聊不来的,那也是没办法,再去找咯。以上的东西都是个人的一些感悟,每个人面对的场景不同,仅供参考。
最后打下广告,蚂蚁金服-金融核心部门长期招聘,P6-P8岗位都有,亲们简历的投过来吧,wusan.wyb@antfin.com。
附上一些学习资料:
并发与基础相关
并发基本会是面试的重点
java并发编程的艺术 -- 补并发相关的概念不错,后面分析的源码有点老了,用的是JDK1.6,可以自己结合实际来查看
《深入理解Java虚拟机:JVM高级特性与最佳实践》-- 内存模型,垃圾回收,jvm常用调优方式也常问到,自己可以结合实际碰到的问题进行讲解,效果会更好
高并发量网站解决方案
Java多线程共享变量控制
JAVA多线程和并发基础面试问答
分布式系统事务一致性解决方案
探讨Java中static synchronized和synchronized
漫说系列--可用来了解关键基础概念,然后再进一步进行学习
框架相关
spring-基本会问到AOP和IOC,还有加载过程,这个自己平时注意下积累;以下贴出一些博主,可根据需要进行观看学习,但是最好自己也跟进源码进行验证,不然没啥效果的.
spring源码相关分析
《深入理解mybatis原理》 Mybatis初始化机制详解
spirngMVC源码分析
redis技术学习系列--根据你项目过程当中用到的nosql进行查找学习
网友评论