【面试】Java程序员面试应该准备什么

写在前面

        故事的开局是这样的,本人所在的公司最近两年很是不景气(大部分互联网公司应该都差不多),各种裁员降薪,加班内卷,加上年龄越来越大,使得本人有一种强烈的危机感。倒不是说害怕失业,更多的是觉得耗着没意思吧,工作10年,就这么稀里糊涂的混过来了,有时候想想觉得挺不甘心,不管今后是否继续从事这个行业,总得为自己这10年的编程生涯做一些总结吧。所以从今天起就正式开始写写文章了,为了避免一上来就聊技术有些生硬,开篇就聊聊本人在面试准备相关的心得吧,正好也许马上会用到,技术相关的文章后面会持续更新。。。

1.简历制作

        因为本人是JAVA程序员,所以后面所涉及到的具体专业技能都是站在JAVA视角去说的

1.1.专业技能

        这个模块必须写在最亮眼的地方,因为这个是招聘者最关注的模块,直接决定你和投递的岗位是否匹配。至少要包含基础技能,热门技能,JD中要求的技能,有可能的话尽量准备一些加分的技能,毕竟招聘者希望你的性价比更高。以JAVA为例;

        基础技能:数据结构,算法,设计模式,并发编程等

        热门技能:Spring全家桶, 微服务中间件,DDD等

        JD要求:JD上的要求

        加分技能:JD以外,指责以外的技能,比如前端,运维,DBA相关的技能

1.2.项目经验

        一般写三个左右就好了(简历筛选的时候面试官没那么大耐心一个个的看,特别是写的不清楚或者没啥营养的项目),但是要写清楚,保证质量,要有亮点,工作时间长的同学可以挑几个比较有代表性的项目写上去,如果有同行业的项目经验一定要重点写。每个项目模版至少要包含以下几点,项目名称,项目简介,你在项目中担任的角色,项目亮点(一定要突出技术难点或技术带来的价值),以及个人总结(个人通过项目的成长和感悟)。

1.3其他加分项

1.带过项目,带过团队

2.深度研究过一些主流框架的底层原理和代码

3.某某开源项目的commitor或自己写过开源项目

4.有自己的技术博客

2.自我介绍

        自我介绍单独拎出来,是因为很重要,也很容易被大家忽视。任何岗位的面试,第一个环节就是自我介绍。很多人不太重视自我介绍,喜欢临场发挥,要么就是吞吞吐吐,要么就是非常简单,介绍完自己之后,面试官很尴尬的来了句“完了?”,那你大半是完了。

        自我介绍实际是让面试官快速了解你,同时也是面试官对你的初步考核。面试官从你的自我介绍中,至少能提取三点信息:

        1.沟通表达能力(如果你吞吞吐吐,面试官很难相信你是个好程序员,或者怀疑你简历造假,在后面的技术面试环节也会失去很多耐心)

        2.工作年限,工作经历

        3.项目经历,擅长领域,优点

        所以自我介绍这个环境还是要提前准备一下,然后背下来自己多说几遍。内容要简短,又要有关键信息,包含个人基本信息,学历(学历太低的可以不说),工作年限,过往工作经历,过往项目经历。这样面试官对你的初步印象就是:这小伙子说话干净利落,思路清晰,抓得住重点,还不错。

3.专业技能复习

3.1.JAVA基础

1.数据结构(JAVA里就是集合容器)和算法(如果要面试大厂必备)

2.并发编程(并发特性,内存模型,锁,并发容器,多线程等)

3.JVM(内部结构,类加载,垃圾回收器,垃圾回收算法,对象存活判断,监控和调优等)

4.网络编程(IO模型,JAVA实现,Reactor编程模型等)

3.2.核心开发框架

1.Spring Framework(ioc, aop, mvc,事务等)

2.Spring Boot

3.Mybatis, Hibernate

3.3.微服务

1.网关(spring cloud gateway, zuul等)

2.服务注册与发现(nacos, redis, zookeeper,euraka, consul等)

3.RPC调用(dubbo, fegin, gRpc等)

4.配置中心(nacos, redis, zookeeper,euraka, consul等)

5.分布式事务(seata, bytetcc, atomikos等)

6.分布式锁(redis,zookeeper等)

7.降级,熔断,限流(hystrix,sentine等)

8.分布式任务调度(xxljob, elasticjob等)

3.4.数据库和中间件

1.关系型数据库(mysql, oracle, pgsql, db2等)

2.非关系型数据库(redis, mongodb, memcache,hbase等)

3.中间件(elastic search,rabbitmq, rocketmq,zookeeper等)

4.项目梳理

        项目梳理是本人认为最重要的一个环节(应该是和专业技能同等重要的),也是实际面试过程中必问,大多数面试官重点关注的环节,它直接反映求职者之间的差距,甚至直接决定成败。通过求职者的项目介绍,面试官可以提取很多信息,比如:

        1.求职者在工作中的沟通表达以及协作能力

        2.求职者所在公司和项目的整体技术能力,业务规模

        3.求职者在项目中所处的角色

        4.求智者个人工作能力和工作态度

        很多同学专业技能复习的还不错,面试的时候回答的也还行,但是就载到了项目介绍这个环节,为什么呢?因为大部分同学没有认真复盘自己做过的项目,潜意识里认为程序员就应该更关注技术,项目随便写写就好了,简历上没有介绍清楚,面试的时候更是介绍的云里雾里,连自己做过的项目都说不清楚,面试官不刷你刷谁呢。大家有没有发现,一般公司技术面试都是小喽啰,大佬面试都是直接问项目,足以见得项目的重要性,技术最终都是为项目服务的。那说了这么多,我们到底要怎么去准备呢?

        1.先好好了解下你们公司的商业模式,客户群体,简单来讲,就是你们公司通过什么方式挣钱,挣谁的钱

        2.了解了第一点之后,你再去把公司整个系统的功能了解一下,不需要深入了解,只要从用户的视角去使用一下就可以,要知道每个子系统承载什么功能,都是什么类型的人在用,用来干什么,完整的走一个业务闭环就可以了

        3.这个时候再去看你负责的子系统,你可能会有不一样的感受,瞬间明白了系统为什么这么设计,甚至在整体架构上会有自己的一些想法,这些都是可以在面试的时候拿去吹的

        4.最后还得要回归到技术上来,了解了整体业务架构,你对项目中的技术选型,业务难点也就自然明白了,这个是应对面试官问你为什么要用这个技术,项目中有哪些难点等问题。当然你也可以基于你的理解,对技术选型重新调整,编排,稍作包装,只要真正吃透了这个项目,为了让你的项目听起来更加高大上,这些都是常规操作

        也许大部分人在项目中只是一个小开发,但是经过上面的准备,然后稍微组织下语言,你的格局会瞬间打开,应付大部分面试应该不成问题。

总结

        面试是一件很烦恼的事,准备面试是一件更烦恼的事。希望本人的这篇文章能给即将要找工作或正在找工作的你提供一丝丝帮助。最后祝愿大家工作顺利,写代码不出bug。

你可能感兴趣的:(面试,职场和发展,java,跳槽,求职招聘,后端)