前言
此内容原本存于我的GitHub,近期因应要求面试多人,整体体验令人颇为头疼,于是补充细节后发布至博客园,顺便小小吐槽一番。
面试前准备
提前准备
-
利用招聘网站罗列招聘的技术相关清单
百度百聘链接:https://yiqifu.baidu.com/g/aqc/joblist?q=Java开发
查询岗位招聘情况的网址:https://index.baidu.com/v2/index.html#/
包括智联招聘、前程无忧、中华英才、BOSS直聘、拉勾网、猎聘网、58同城、赶集等招聘平台
牛客网:每年春季招聘(3 - 4月底,部分至4月中旬)和秋季招聘(7 - 9月底,部分至9月中旬)期间,众多企业会在此发布招聘信息,同时有不少公司员工发布内推消息,建议在3月前投递春招岗位,7月前投递秋招岗位
超级简历:汇聚了各大企业的校招入口 -
依据上述列出的技术清单选取项目【无项目者可前往Gitee和GitHub找寻,而后剖析业务以弄懂】,同时可利用该清单确定项目关注点内容
-
基于1、2打造个人简历
-
根据1、2、3准备面试题【结合项目进行理解性记忆、深入探究。基础、算法至关重要】
简历与投递
不要一份简历通用到底
针对每家公司招聘要求对简历进行适当调整,校招求职者的简历控制在2页以内,社招者不超过3页,语言要简洁精炼,避免冗长,项目经验至少有2个,不然连简历筛选这一关都过不了
简历编写
- 简历模板 :
- 中文简历模板集合(推荐,开源免费):https://github.com/dyweb/awesome-resume-for-chineseopen in new window
- 木及简历(推荐,部分免费) : https://www.mujicv.com/open in new window
- 简单简历(推荐,部分免费):https://easycv.cn/open in new window
- 极简简历(免费): https://www.polebrief.com/indexopen in new window
- Markdown 简历排版工具(开源免费):https://resume.mdnice.com/open in new window
- 站长简历(收费,支持AI生成):https://jianli.chinaz.com/open in new window
- typora+markdown+css自定义简历模板 :https://github.com/Snailclimb/typora-markdown-resumeopen in new window
- 超级简历(部分收费) : https://www.wondercv.com/
- 若有QQ邮箱,可直接使用其自带的简历功能,具体开启方法可自行百度
- 简历排版 :简洁不花哨,技术名词规范大小写(如遵循驼峰规则),中英文间保留空格
- 专业技能 :适时更新内容
- 计算机基础 :精通计算机网络、数据结构与算法、操作系统
- Linux :熟练运用Linux,有在Linux环境下开发与部署项目的实际经历
- Java :扎实掌握Java基础、集合、并发相关知识,有JVM问题排查与调优的经验
- 开发工具 :熟练使用Maven/Gradle、Git、IDEA、Docker等开发工具
- 数据库 :精通MySQL数据库及常见优化手段(如索引、SQL优化、读写分离、分库分表),有丰富的Redis实战经验(搭建过Redis集群),熟悉MongoDB(可选)
- 搜索引擎 :熟练掌握Elasticsearch/Solr的使用及原理
- 框架 (根据自身情况调整):熟练掌握Spring、Spring MVC、SpringBoot、MyBatis、JPA、Spring Security 、Junit、Netty(可选)、Activiti/Flowable(可选)等开发框架
- 分布式(可选,根据自身情况调整):
- 熟练掌握RPC(Dubbo)、分布式事务(Seata)、配置中心(Apollo)、分布式链路追踪(SkyWalking)、分布式ID(UUID、Snowflake等)、消息队列(Kafka、RabbitMQ等)、限流熔断(Sentinel)的使用与原理
- 熟悉Spring Cloud / Spring Cloud Alibaba 全家桶常见组件的使用,有丰富的微服务架构项目开发经验
- 前端 :熟练掌握HTML5、CSS、JavaScript、Ajax,熟悉TypeScript,有React、Vue的实际开发经验
- 还有一些工作招聘有特定要求,例如:
- Devops :熟练掌握Jenkins,熟悉CI/CD流程
- 云原生 :熟练掌握K8S(Kubernetes)及其周边生态ServiceMesh
- 项目经验 :涵盖Who、When、Where、How、Why、What(2 -3个即可),关键是突出自身所做之事(挖掘亮点)
- 示例:
> 项目名称(字号需大些)
>
> 2017-05~2018-06 于淘宝担任Java后端开发工程师
>
> * 项目描述 : 简要说明项目的用途【不超两行】
> * 技术栈 :所用技术(如 Spring Boot + MySQL + Redis + Mybatis-plus + Spring
> Security + Oauth2)
> * 工作内容/个人职责 :简单阐述自己做了什么,解决了哪些问题,带来了何种实际改善。突出自身能力,避免过于平淡的表述。
> * 个人收获(可选)
> :从该项目中学到了哪些知识,运用了哪些技术,掌握了哪些新技术的使用方法。通常可不写个人收获,因为在个人职责介绍中已体现主要收获。
> * 项目成果(可选) :简单描述项目取得的成绩 - 技术架构 :直接罗列技术名词即可,无需再解释技术的作用,那属于无效表述
- 个人职责 示例:
- 基于 Spring Cloud Gateway + Spring Security OAuth2 + JWT 实现微服务的统一认证授权与鉴权,运用RBAC权限模型达成动态权限控制。
- 参与项目订单模块的开发,负责订单的创建、删除、查询等功能,借助Spring状态机实现订单状态的流转。
- 在商品和订单搜索场景中引入Elastic-Search,并实现相关商品推荐及搜索提示功能。
- 整合Canal + RabbitMQ将MySQL中的增量数据(如商品、订单数据)同步至Elastic-Search。
- 利用RabbitMQ官方提供的延迟队列插件实现延时任务场景,比如订单超时自动取消、优惠券过期提醒、退款处理。
- 在消息推送系统中引入RabbitMQ实现异步处理、削峰填谷和服务解耦,最高推送速度达10w/s,单日最大消息量为2000万。
- 使用MAT工具分析dump文件,解决了广告服务新版本上线后出现的大量服务超时告警问题。
- 排查并解决扣费模块中因扣费父任务和反作弊子任务使用同一个线程池导致的死锁问题。
- 基于EasyExcel实现广告投放数据的导入导出,通过MyBatis批处理插入数据,依托任务表实现异步操作。
- 负责用户统计模块的开发,运用CompletableFuture并行加载后台用户统计模块的数据信息,平均响应时间从3.5s缩短至1s。
- 基于Sentinel对核心场景(如用户登入注册、收货地址查询等)进行限流、降级,保护系统,提升用户体验。
- 对热门数据(如首页、热门博客)采用Redis+Caffeine两级缓存,解决缓存击穿和穿透问题,查询速度达毫秒级,QPS超30w。
- 使用CompletableFuture优化购物车查询模块,对获取用户信息、商品详情、优惠券信息等异步RPC调用进行编排,响应时间从2s缩短至0.2s。
- 搭建EasyMock服务,用于模拟第三方平台接口,方便在网络隔离情况下进行接口对接工作。
- 基于SkyWalking + Elastic-Search搭建分布式链路追踪系统,实现全链路监控。
简历投递
- 投简历时间 :周二、周三、周四
- 周三:上午9点至11点为最佳时段
- 周二和周四:上午9点至11点以及下午1点至3点较为合适
- 周一:HR刚结束周末,还有早会等事务;周五:临近周末,需进行总结、外出参会等
- 投递简历时最好做到”岗位匹配“,因为要能直接上手工作
面试
STAR法则与FAB法则
STAR法则(Situation Task Action Result):可将该法则应用于自身简历及与面试官的沟通交流中
* Situation: 情景。事情是在何种情境下发生的?
* Task: 任务。你的任务是什么?
* Action: 行动。你做了什么?
* Result: 结果。最终的结果怎样?FAB法则(Feature Advantage Benefit):销售领域术语,主要是让面试官知晓你的优势以及你能为公司带来的价值
* Feature: 你的特征/优势是什么?
* Advantage: 相较他人好在哪里;
* Benefit: 若雇佣你,招聘方将获得何种益处。
自我介绍
尽量将语速控制在每分钟180 - 200字【提前准备】
1. 自我身份介绍:占比10 - 15%
2. 自身经历与成果:占比70 - 80%
3. 职业期许:本质是对贵公司极为认可、表达忠心与职业规划,占比10 - 15%
【示例】社招:留意相关要点【第一轮面试通常是寒暄、询问面经、基本场景题,后续轮次面试:着重介绍所参与的业务】
面试官,您好!我叫独秀儿。我目前有 1年半的工作经验,熟练运用 Spring、MyBatis 等框架 ,了解Java底层原理如JVM调优,且具备丰富的分布式开发经验
。离开上一家公司是因为我渴望在技术层面得到更多锤炼。在上一家公司,我参与了一个分布式电子交易系统的开发,负责
搭建整个项目的基础架构,并且通过分库分表解决了 原始数据库及相关表过于庞大的问题,目前该网站最高可支持10万人同时访问。工作之余 ,我利用闲暇时间研发了一个简易的RPC框架,此框架运用Netty进行网络通信,
目前我已将该项目开源,在GitHub上收获了2k的Star!
谈及业余爱好,我较为喜爱通过博客梳理分享所学知识,如今已是多个博客平台的认证作者。
生活中我是个积极乐观之人,常通过运动打球来放松自己。我一直都十分期望加入贵公司,我觉得贵公司的文化与技术氛围我都颇为心仪,期待能与您一同共事!
面试关键提示
至关重要的提示 :后续轮次面试的切入点聚焦于场景题、场景题、场景题【这一点当下及未来都不会改变】 ,整个流程是 业务问题 —— 技术问题 —— 设计问题 —— 落地中开发、测试、线上出现的问题,然后此流程循环往复
1. 是何种业务 —— 业务出现了什么问题 —— 为何会出现该问题(如何排查出来的)
2. 如何解决的、设计是怎样的 —— 为何如此设计,而非采用xxx设计
3. 在这个设计迭代过程中,开发、测试、线上遇到了哪些问题提示:留意面试官的暗示
有些优秀的面试官会暗示应聘者,某些项目经历水分过多,自己都无法清晰阐述,所以若面试官察觉此情况,想给予机会,会说“你对哪个项目熟悉”等类似话语,这实则是在示意无需局限于简历上的项目,将自己最熟悉的项目拿出来聊聊,让其看到你入职后能基本上手业务的“基本能力”
有些优秀面试官也会如上述所说“为何如此设计,而非采用xxx设计”,这类通常是有技术、有经验的面试官,其给出的设计是经时间与经验验证的,各方面较为完善,所以这是在告知你:你原先的设计逻辑
或 在开发、测试、线上落地实施方面未来可能存在问题,要么你用我所说的设计结合你的经验来圆你原先的设计,要么你承认原先设计存在问题
认可我给出的更完善的设计,并用我提出的设计来解释你原先设计后续会遇到的问题,所以若被问住别来个
不好意思,时间太紧张了,我没准备好。你没准备好还投什么简历、面什么试呢,找个像样点的理由嘛】.............甚至面试官已给你该问题的标准答案,未来其他面试官问你时,你便可采用他所说的设计
什么是好面试官?怎样一开始就先吃颗定心丸?
当下90后逐渐接管管理层,有时面试时面试官要求应聘者开视频,但自己却不开,所以通过声音判断,声音听着年轻的,便可先吃颗定心丸,将心放到60% -
70%,90后普遍三观正、素质高【其他年龄段也有高素质者】,大多经历了从无网络到黑网吧 再到互联网 到多元化
直至如今的历程,历经多次社会重大变革,小时候正确三观奠定牢固,后又受社会多次磨砺经历多次三观重塑,所以90后大多不会故意刁难人
面试官提问回应
- 面试官问你有何问题要问时 :别立刻询问薪资
- 咱公司对我这个职业有哪些期望?
- 入职后是否有相关的技能或岗位安全等培训?
- 为了更好地开展工作,我还需要补充哪些技能?
- 我们部门有多少人?
- 重点内容如下:
- 试用期时长、试用期工资是否为实际工资的80%、试用期是否缴纳五险一金?
- 咱公司有没有年终奖?有没有项目奖金?
- 咱公司有哪些福利?
- 绩效考核是如何进行的?
- 几号发放工资?
- 【可选,用于复盘】通过前面的交流,您觉得我哪里表现欠佳,期望您能给予一些建议?【虽说面试官不一定会说,但自己可以询问,这是为了自身考虑嘛】
- 结束语 :我大概何时能收到咱公司的回复之类的【一般是1 - 2天,所以可不问,直接道声拜拜就行】
结束后进行复盘、
试用期和转正
试用期
- 第一天:安排啥就做啥【留下良好印象】
- 第一周:融入团队【早到岗、中午一起活动、晚上不早退】
- 第一个月及之后:产出工作成果比听从安排更重要
转正申请
- 2是最关键的 这两点需与公司实际情况相契合(符合领导期望)
- 成绩 ——> 我完成了哪些工作
- 进步 ——> 我还能开展哪些工作
- 不足 ——> 自我认知(此部分不宜过多) 比如在哪些方面被领导“指导”,自己采取了什么解决办法
- 表态 ——> 喊口号、描绘未来规划(贴合实际,不过分夸大)、表达感激(如谁给予过指导、帮助)
- 注意礼貌,别用xxx哥、老大、领导等称呼,采用 姓名 + 职务的方式
工作总结
让老板知晓自己做了什么、付出了多少努力。随时做好汇报工作的准备,比如在厕所偶遇领导时“随口”被问起做了什么、有何收获、接下来要做什么。就像吃饭时,优化了吃饭的流程
重要提醒
具备80%的实力时,可适当增添一些内容,使其达到约90%,但切记不可添加过多【前提是得有一定实力,而非毫无实力地胡编乱造,不然面试官问几个问题就会察觉,也就懒得深究了】
在技术面试中,面试官是有技术、有业务经验的人,其实他并不想过分刁难人,毕竟入职后就是同事了,所以只要能让他确信应聘者有能力上手公司业务,就不会戳穿其中的水分,因为他自己当初也是这么过来的,所以他心里清楚其中的水分情况,难道应聘者与他或上级领导没有关系,他敢把完全无法胜任业务的人招进来吗,招进来的话,上级领导都会质疑他的能力,这相当于应聘者给面试官找麻烦了【出现这种情况,面试官心里肯定会把应聘者祖宗十八代都骂遍】。