面试的一些思考
平时工作中要思考项目的效果怎么量化,有哪些评价指标,可以帮助自己反思工作中的得失,而不是单纯为了面试。
1 自我介绍
自我介绍要突出自己的贡献,项目的细节不要展开。时间控制在1~2分钟,要挑重点项目来讲。
1.1 STAR 模型
- Situation:项目背景。项目规模,功能,目标用户。
- Task:分配的任务。负责、设计、开发、维护了哪些模块。
- Action:如何完成任务。设计的架构,开发应用到的技术,维护遇到的问题。
- Result:自己的贡献。开发了多少功能,优化提高的百分比,维护修改了多少个BUG。
1.2 举例:金融用户中心
金融用户中心是一个微服务,为 5000万+ 随手记金融用户提供登录、查询等功能。
本人的工作是在维护已有功能之余,添加部分最新功能。
维护工作方面,本人对旧账户系统拆分重构,借助 MQ 平滑迁移。开发了隐私信息脱敏功能,使用并发工具做批量脱敏。
在工作期间,我主要完成了1次重大重构,开发了3个功能。
2 介绍项目
介绍项目环节没有时间限制,可以按照 4 + 1 views 展开叙述。
2.1 4 + 1 views
- 场景。业务场景,解决问题,性能指标(DAU、峰时QPS)
- 逻辑。业务架构图,子模块,核心表
- 过程。核心流程,接口路径
- 开发。项目结构,技术选型(开发框架、中间件)
- 物理。部署了几个实例,负载均衡,高可用
2.2 举例:金融用户中心
3 技术一面
时间一般1小时,要注意控制深度,比如面试官问 redis 数据类型,你当然知道 string、hash、list、set、zset,你还知道 zset 底层实现是 skiplist,但不要着急展开 skiplist 的内容,因为在面试官看来,你说出 skiplist 已经拿了满分100分,继续展开也不会得到200分。但如果面试官进一步问你 skiplist 实现,那你就可以开启无限火力了。说白了面试是对等的交流过程,你只需要额外迈出一步,剩下的99步交给面试官吧。
- 项目情况。不会太深入,目的是展开来问技术基础。
- 技术基础。网络、系统、源码都会问到。
- 编码能力。多线程编码题、算法题。
4 技术二、三面
- 项目情况。事无巨细地盘问,挑刺简历中提及的内容,如果面试官还在一线,还会深入技术基础,这一面深度更重要,可以毫无保留地说。
- 场景设计。给你一个全新的场景,看看你的思路。
- 个人发展。这些问题看似轻松,实际上考察了价值观,如果眼缘不对,很可能折在这儿。而且问题越简单,回答要求越高,面试官会希望你秒答出来,所以面试前可得想好了。
- 项目中碰到什么问题,如何解决的?
- 从这个项目中你学到了什么?
- 如何处理和其它团队成员(开发、测试、项目经历)的冲突?
5 HR 面试
- 为什么离职(个人职业规划,赞美上家)
- 你对我们公司有什么了解(做好功课)
参考文献
- [剑指Offer #1.3.1]