一年一度的“金三银四”又到来了,本以为疫情放开后求职环境会变好一些,没想到反倒是比之前更差了,最近也有许多读者通过各种方式跟博主沟通,询问关于面试的一些问题,刚好趁着这段时间有些空闲,整理了一下去年跳槽的一些经验,希望能够帮助到有需要的朋友。
博主先做下简单的自我介绍: 坐标深圳,22年底跳槽(骑驴找马),在近一个多月时间内面试了:南方电网,格力,顺丰,KLook,维信金科,富德保险、联创杰等20多家公司,收到南方电网,KLook,格力,维信金科等10几家公司Offer(还有几家走到2,3轮面试因为收到心仪offer而没有继续参加后续面试),最后选择了一家岗位匹配度和薪资比较符合个人预期的游戏公司,现在主要负责游戏数据中台开发。
下面是之前收到的一些录取意向,因为Boss沟通信息有时效性,很多录取信息找不回来了,现在很多公司都是要你确定入职后,才会发实际的Offer,在未确定之前,很多都是口头Offer(口头Offer没有法律效应,大家面试时要慎重考虑)。
废话不多说,下面就聊聊个人的面试经验,主要可以分为两部分即:面试准备,面试复盘。
面试准备: 主要是关于简历的编写,投递,面试题目准备,与Hr沟通技巧等相关知识。
面试复盘: 主要是面试过程中的问题发现,经验总结
面试准备
主要大纲如下:
简历编写
一般简历包含的模块(只是个人看法,仅供参考):个人信息、教育背景、求职意向、专业技能、工作经历、项目经历,自我评价七大模块
注意:涉及到时间的,如工作经历,项目经历,要按照时间逆序写,即先写最近发生的,再写以前发生的,面试官更加关注的是你最近的一个状态
个人信息模块: 简历中需要在个人信息中明显体现:自己的工作年限和联系方式
教育背景模块:
有工作年限的朋友在教育背景处无需编写一大段学习过的课程名称,而是应该简洁地写出自己在工作或者学校中非常突出的特点,比如获得过蓝桥杯XX奖状,国家励志奖学金。
如果是应届生的话,可以抽选几个与岗位要求匹配的相关科目写上即可(尽量写自己成绩比较好的,有些岗位可能要提供成绩证明)
求职意向模块:
薪资和入职时间写【面议】,一般不建议直接写明,给自己预留空间,薪资实际上是根据面试情况浮动的,不要给自己固定死,表现好就适当提高自己的预期
专业技能模块:
技巧1:要具体不要抽象,一定要避免跟大多数网上教程一样写精通XX技术,熟悉XX技术,单纯从文字谁也看不出来你是真是假,反倒可能给后续面试留下隐患。
代码语言:java复制
推荐的方式:结合STAR原则,简要介绍,如:
反例:精通/熟悉SpringCloud技术栈
正例:熟悉SpringCloud技术栈的使用,曾使用它们独立完成XX项目基础搭建,开发,并定位开发中使用产生的一系列问题。
这样两者一对比下来,显然下面的描述面试更加具体,专业技能描写要尽量避免抽象,这样也方便后续面试官进行具体的面试问题询问。
技巧2:突出优点, 如在工作获得过年度优秀个人(最好写明有多少个开发者),个人有开源项目,博客等(前提是有价值的,不是个人随记那种价值意义不大的)
代码语言:java复制 正例:
有个人开源项目,获得XXStar,地址XXX。
有个人博客,在主流XX平台有XX粉丝数,是XX平台签约作者。
技巧3:烂熟于心, 对于自己编写的技能一定是比较熟悉的,不要看网上教程就乱写, 面试官大多数是会根据这个进行询问,自己不熟悉的写上去反倒是扣分项。
工作经历模块:
这个模块一定要有(如果是应届生就写实习经历), 许多人可能会觉的是不是跟【项目经历模块】功能重叠了,其实不是,面试官通过这个模块可以一眼看到你的整个工作生涯,而项目经历一般细节篇幅较长,很难让人直观对面试者整个工作经历有一个全面的认知
包含信息: 公司名称,部门,时间,在公司的职责,业绩
代码语言:java复制正例:
XX公司,IT部门(20xx.08-23xx.09)
职责:作为XX组长/开发者,负责XX架构技术,技术文档编写,CodeReview等工作
业绩:负责的XX项目如期交付,达到XX目标,为公司带来了XX
项目经验模块:
注意,简历编写的目的是为了让面试官看懂,应尽量具体不要抽象,用行业通用专业术语而不是大量描述词,写完后反过来问自己或者给朋友参考,通过第三视角观察:如果是别人提交这样的简历,自己是否能够看懂。
编写一般包含以下信息:公司名称(项目始末时间)、项目名称,项目简介、技术栈、个人职责,项目难点,工作成绩
示例:
代码语言:java复制 XXX公司 IT部 XX项目(项目起始时间-项目结束时间)
公司简介(可选,如果是比较知名或者和应聘岗位有契合度的建议写):XX公司,国内做XX项目Topx,主营XX业务
项目简介:XX项目是为了解决XX问题,通过XX技术/算法实时计算/处理数据,然后进行XX数据分析,并可视化输出XX指定各类型统计信息,给XX业务提供数据支撑。
技术描述:JDK8,SpringCloud,Spring,Mybatis,PostgreSQL,Redis,Promethues,Grafana等
项目职责:
1、负责与产品进行需求沟通,探讨技术可行性
2、负责项目的整体架构设计,设计文档编写
3、负责XX核心模块开发,项目进度跟踪,阶段性复盘
负责功能(可以结合STAR法则描述具体负责的开发模块):
1、使用XXX技术进行实时数据接入,通过XX算法/方式对数据进行XX维度统计,输出XXX数据,完成XXX可视化展示。
项目难点(后面面试官基本都会问你是如何解决的,所以对于写上去的一定要能够自洽):
1、项目的架构设计,服务拆分和技术选型
2、保证数据接入服务的可靠性,高可用性和大数据量下XX数据实时处理的稳定性
工作业绩:
1、XX项目对实时数据提供了可靠,准确的数据处理(准确率达到了xx),为XX系统可视化展示各类型指标,运营进行各决策制定提供了数据支撑,给公司XX带来了XX帮助。
自我评价
还是一句话,要具体不要抽象,不要写努力,刻苦,不懂可以学之类的,要写有证据证明你的观点,否则不如不写。
正例:自驱动力强,对自己职业规划有清晰认识,在业务时间会自己钻研新技术,并通过编写博客和开源项目XXX进行输出等(这样就跟你前面举例的专业技能相呼应)。
简历编写时常见的疑问
简历是不是一定要一页?
个人觉的视情况而定。不知道这个结论是从哪里冒出来的,确实看到有一些面试官是如此说,但是,对于IT专业,一页简历很难将你的个人特点展现出来。
除非你是行业内非常nb的 ,直接将名字或者个人开源项目放到简历就能让人脑海浮现的人物外,不然,还是不用太纠结这个问题。所以,简历的篇幅尽量简洁的前提下,不要超过4页最好,打印的时候单页打印,方便面试官查看。
一般写多少个项目经验好呢?
考虑到前面的模块篇幅 面试官时间,阅读体验等因素,一般推荐编写2-3个项目经历即可,因此要挑选最近,最具有代表性的项目。
如何对自己的简历熟记于心?
最好的方式就是以面试官的视角看自己的简历,然后提出问题,用专门的文档整理出来,不但可以加深自己的记忆,还可以在下一次跳槽时使用。
代码语言:java复制
比如:你在简历的专业技能模块中提到自己熟练使用SpringCloud技术栈,并且独立进行项目搭建和开发。
那么可能面试官视角可能就会问你,你使用这个技术搭建过什么项目,为什么要选择这个技术栈,使用XX技术栈代替不行?在进行技术栈选型时有做过什么调研,你们最终选用的是哪个版本,搭建过程有没有出现过什么问题等等。
考虑到面试官可能会提问这一系列的问题,因此你必须提前做好应对准备,不要回答说没有参考,然后自己定的 ,即使真实情况确实如此,你也要说出选型的依据,不然面试官就会对你产生质疑,毕竟如果以后让你负责一个项目,你没有依据的选型,后续项目如果出现问题,你是否考虑过应对方案,没有责任心的人面试官的印象分总是很低的。
简历投递平台和规则
有哪些简历投递平台?
Boss:岗位和专业程度相比最高,回复较快,建议作为主要投递网站
拉勾:岗位数量一般,回复较慢,使用体验是在Boss外最好的
猎聘:猎头较多,一般你活跃后他们打电话给你推荐岗位,在应用上岗位数量一般
前程无忧51Job:岗位数据量较少,旧岗位比较多,可以用于参考,回复较少
智联招聘:外包居多,备用参考
脉脉:实际岗位少,贩卖焦虑和广告居多,不过猎头也不少
投递简历时的注意事项?
简历命名:姓名-岗位名称-工作年限,方便HR望名知意
简历统一以PDF方式投递,防止在某些平台查看时出现布局错乱
  投递分先后顺序,不要上来就海投: 自己有意向的岗位先收藏,先尝试面试一些意向比较低的岗位,这样一来可以让自己先熟悉面试流程和进入面试状态,熟悉了之后再投递有意向的岗位把握性更大
与HR沟通术语
要自定义打招呼术语:不要使用招聘平台默认招呼语,突出自己的特点。 试想一下,HR每天要查看成百上千个面试者的招呼,如果你的工作经历和学历不是非常突出,你如何吸引HR的注意力,打招呼将是你可以掌握主动权的一个时机,千篇一律很容易被埋没。
代码语言:java复制示例:
HR您好,刚刚仔细阅读了您发布的岗位要求,发现与我较匹配,希望能与您进一步沟通,下面是简单的个人介绍:
先前就职于XXX,有X年工作经验,XX年毕业于XX大学-XX专业(学信网可查),曾主导过XX等项目,负责核心的XX架构设计和开发,对线上问题定位,调优有个人的理解。
在校/工作期间获得过XX奖,成绩一直处于前TopX,有XXX开源项目/博客,访问地址如下:
对贵司的该岗位很感兴趣,希望能够得到您的回复,谢谢。
最好能够添加HR微信(就说可能有时候不注意看消息,如果方便的话加个微信): 有时候很多岗位信息,很容易遗漏,通过微信沟通可以更加方便,许多面试平台的沟通信息存储都是有时间限制的,过了时间就找不回来了。
再者说,量变引起质变,当你添加到一定量之后,以后的面试都可以直接从微信中找了HR了,熟悉的肯定更有优势一些。
面试预约的细节
如何合理预约面试时间&地点?
在接受面试之前一定要提前做好计划,因为很多时候面试邀请都是并行的,你接收了这个面试时,之前的面试可能就有回复准备进行下一阶段面试,如果不合理安排很容易出现冲突或者面试频繁的现象,频繁的面试是非常耗费精力,而且会影响面试的成功机率。
合理的面试时间:一天一面或者三天两面,要给自己预留出面试复盘的时间,不要以为紧凑的面试能够提高成功机率。
同时,在接受面试之前,尽量了解一整个面试的流程,如果有多轮面试,可以沟通看看第一轮面试是否可以远程(这样可以减少出行机率,在自己熟悉的地方面试氛围也会更加轻松些)
如何合理协调多个面试?
可以使用敬业签,番茄Todo等app记录每日面试的安排,合理调整时间
面试复盘
复盘的目的在于发现面试中自己未注意/查觉的问题,常言道:旁观者清, 复盘就是通过第三视角来观察自己,更能帮助我们全面了解自己,增强面试自信,下面是一些复盘的技巧。
一、面试流程复盘: 可以借助思维导图等工具将对应的面试流程归纳总结起来(如果后续你收到多个offer时,也有助帮助你挑选,毕竟很多时候第一感觉就是对的),内容如下:
具体内容有:时间,地点,公司,岗位,面试时间,面试官信息,是否拿到offer/大概什么时候知道面试情况,面试感受
面试中了解到的公司,岗位信息(大概需要面试几轮,可能的时间,为了最大程度在多个offer出现时,横/纵向对比拿到心仪的offer)
二、面试问题复盘
面试中涉及到的知识点(适当的情况下可以录音方便复盘)
主要的内容有:面试中回答准确的问题,面试中回答比较模糊的问题,面试中未回答出来的问题
三、面试中自己提问问题的回复
针对提问面试官的问题:尽可能通过面试官的的回答了解到自己的面试情况,不是直接问,通过委婉的方式,如:面试官您觉的本轮面试我哪些方面可能需要更加深入或者加强呢?
针对HR的问题:主要了解薪资,福利,公积金等问题,特别是五险一金的档次和比例(但这些问题一般是留到最后一轮,如果前面几轮的话,可以主要询问关于公司的文化方面的问题)
这个是建议每次面试都要记录下来:随着面试场次增多,很多时候不同公司的回复可能容易造成记忆混乱,对于自己权衡挑选Offer影响不好。
面试题目
因为面试题目较多的原因,现在还有部分在答案梳理中,所以此处会给出部分面试的题目,后续会同步更新答案,想要第一时间获取最新面试题目,欢迎关注博主在GitHub开源的面试项目:IT知识小屋
简历可能提问问题大纲:
面试题目大纲:
部分题目列举:
如何进行自我介绍?
您是如何进行项目架构设计的、技术选型的呢?
您说您对线上问题处理、性能调优和线程并发有自己的理解,请问能简单介绍一下具体是什么?体现在哪里呢?
您们是如何进行项目复盘的呢?复盘后会输出什么?
您离职的原因是因为什么?
你的预期薪资是多少?能谈谈上一份薪资是多少?预期薪资的来由是什么?
你大概什么时候能够到岗?
在编程中使用了哪些代码规范?如何进行复用?
你开发的项目中都是使用SpringCloud这一套框架进行开发的?能简单谈谈你们搭建的流程?
简单说说SpringBoot、SpringMVC、Spring Framework的区别
Spring熟悉?能简单说说其中使用了哪些设计模式?
有阅读过Spring源码?能够谈谈你阅读过哪些Spring源码?
既然你研究过Spring源码,能够谈谈Spring实例加载的一个过程?它是如何解决循环依赖的呢?
你们项目中使用到了SpringCloud框架的哪些组件,能够简单介绍是如何使用它们的?
能简单介绍下JVM的布局是怎样的呢?java是如何进行垃圾回收的?
在项目中有通过Gc日志回收问题分析的经验?你进行问题排查的流程是什么呢?有使用到哪些工具呢?
在实际的开发中,遇到过OOM问题?你是如何排查的?
有进行过JVM调优?有哪些方法进行JVM调优呢?
JVM有哪些核心指标,合理范围是多少?
你有具体的调优案例?可以讲讲具体过程?
你都用过哪些数据库呢?它们之间有什么区别?为什么项目中要选型这个数据库?
对于SQL你有什么方式进行优化呢?
如果走了索引,查询还是慢,该如何处理?
你们的接口、数据库设计是如何进行评审的?评审后会输出什么东西呢?
Redis你熟悉?有哪些场景下使用到了Redis?Redis是单线程为什么性能这么高?
你有使用过哪些消息队列?什么场景下使用?如何保证消息不丢失?如何防止重复消费?
你了解多线程?在什么场景下使用了多线程,有遇到什么问题?
你了解分布式事务、分布式锁、分布式缓存?
项目中有使用到单元测试?如何编写的?
设计模式你了解哪些,谈谈它们在JDK源码中的使用?
如何避免重复入库问题
什么是接口幂等性?
如何避免库存超卖问题
谈谈你对集合的认识/常用到集合的特点
HashMap和ConcurrentHashMap的区别
Synchronized和Lock的区别
介绍下线程池的各个参数和作用
为什么线程池中队列要使用阻塞队列
线程池何时超时?
如果数据量非常大,怎么保证接收接口的稳定性
使用Redis进行库存处理,如果存在一个订单多个商品,怎么保证Redis执行时的原子性,涉及到多个商品库存扣减。
redis如何查询数据预热,如何进行数据预热,怎么知道哪些数据需要预热?
在数据量非常大的时候,使用redis存在瓶颈,有没有更好方案?
Redis中的大Key和大Value如何处理?
介绍下最近项目的一个技术栈以及项目上有亮点的地方整体谈谈
谈谈项目的业务场景具体是什么?
队列中堆积大量数据如何快速写到数据库
列式数据库跟传统数据库或者es,查询方面索引有什么区别?
多个服务之间有会话,如何保证会话的一致性?
介绍一下你觉得自己做得比较好的项目,拿出来分享下。
在项目中,遇到过哪些比较难处理的技术或者业务问题
你们项目中有没有遇到过如并发度等方面问题的难点
在提供技术方案时,有没有选项报告和性能测试?
你做的项目中,你觉的哪些是你考虑得有欠缺的,后面有时间后,重新回顾是觉的可以优化的地方。
你们系统是使用什么垃圾回收器
JVM你有做过哪些调优?
元空间内存占满后你有分析它是怎么一个使用情况?
Spring中一个对象注入有几种方式,它们有什么区别
AOP是如何实现的?
类加载器如何避免类的重复加载即有多个实现如何选择加载哪个类?
为什么双重锁单例要使用volatile关键字
你觉的自己的开发效率如何?
个人对于工作强度要求如何?
对于想SpringCloud这一套,开发久了微服务也来越多,之间的功能会产生一些交集,想微服务之间的职责划分,一般都有哪些原则。
有做过一个服务/领域的划分,指定一些领域内部的一些能力,是否有做过?
平常对于自己架构能力的提升,你有哪些渠道、研究过哪些网站,系统?
微服务里面中,分布式事务、分布式ID、微服务发现和配置,RPC通信,分布式锁,哪些比较熟,有读过一些源代码?
雪花算法有什么问题?在某些情况下会产生重复的ID
Spring循环依赖了解?
声明式事务失效的场景有哪些
为什么HashMap不一上来就树化?
树化阈值为什么是8
栈帧中都包含哪些信息
lambda中调用局部变量,局部变量为什么定义成final
过滤器和拦截器的区别
Http通信和Socket通信在使用角度来说主要的区别体现在哪些方面?
Http从1.0、1.1到2.0到3.0中间有许多改动,这些具体的改动是哪些?
JVM在8、11、13的垃圾回收期算法的调整,有具体了解过?
MySQL主从节点部署,涉及到全量和增量同步,它们的大概流程是怎么样的?
Redis一般在使用的时候会考虑哪些问题?
Http协议,客户端操作服务端时需要考虑哪些问题呢?
如何对一个接口开启跨域访问?
有几种方法可以对接口进行限流?
由于文章篇幅限制,部分面试题目的介绍就简单到此,想要第一时间获取最新面试题目,欢迎关注博主在GitHub开源的面试项目:IT知识小屋
心里话
如果大家有任何疑问,欢迎私信博主,博主会在看到消息第一时间进行回复。
最后,祝愿大家能够找到符合心愿的Offer。
相关推荐
面试知识开源项目:IT知识小屋,面试真题、面试避坑、996公司、算法、电子书籍等内容干货第一时间分享
实用工具开源项目:轮子之王,拿来即用的常用开发工具(Github,Gitee累计280 star)
代码自动生成开源项目:IT脚手架,一键生成项目基础结构(通用依赖) 数据表实体 controller service等层级代码