20 | 代码之外,技术面试应该具备哪些软素质
技术面试一般涉及以下6个环节:
简历筛查
好的简历要满足以下3个必要条件,分别是信息完备、抽象概括、重点突出。
- 信息完备,指的是必备的东西不可缺。例如姓名、学历、联系方式、工作经历等。
- 抽象概括,指的是可有可无的东西不要写。例如,政治面貌、户籍等。
- 重点突出,指的是对你有利的东西要放大放粗。例如,电话、S绩效、系统性能提高50%等。
自我介绍
建议控制在5分钟,按照时间顺序,比如从大学开始分段介绍,高度抽象出来,以10句左右为限制。说的时候语速放慢、吐字清晰,注意抑扬顿挫。
项目介绍
项目介绍一般需要25分钟左右,主要围绕以下3个问题来描述。
- 在项目中,你解决了什么问题?不解决会有什么后果? Why?
一定是公司遇到了某个必须解决的问题(系统问题、业务问题),最终导致你去做什么对应的事情。 - 这个问题的复杂性在哪?你在解决过程中需要具备哪些能力? What?
既然明确了问题,那么就要再一步找到这个问题的关键点和复杂性。再以此,提炼出技术问题,寻找解决方案。 - 这个问题解决了多少?你取得了哪些业务收益?How?
最终产生了什么样结果,比如节约了多少多少成本,等等。
技术考察
技术考察一般持续15分钟左右,考核的是你的专业知识和经验,比如设计模式、数据结构、机器学习或者AI等。
手写代码
手写代码一般1~2题,持续时间大约是10分钟左右。
开放性问题
开放性问题会隐藏在面试过程中的各个地方。当然,最集中的还是在面试最后的5~10分钟。开放性问题考核的是候选人的综合能力。例如,对行业的理解、对问题的分析、对观点的表达等。
21 | 面试中如何建立全局观,快速完成优质的手写代码?
手写代码的能力
手写代码必须谋定而后动,它考察的是候选人关于模块、函数的分解能力,对代码中变量的声明、初始化、赋值运算的设计框架以及对于编程任务的全方面把控能力。
手写代码的全局观解题方法
- 首先,根据问题进行复杂度的分析。估算问题中复杂度的上限和下限。
- 接着,定位问题。根据问题类型,确定采用何种算法思维。
- 然后,分析数据操作。根据增、删、查和数据顺序关系选择合适的数据结构,利用空间换取时间。
- 分析完这些之后,想一下这些代码大致包含哪些模块,需要拆解出哪些函数,需要用到哪些变量,以及需要在哪里声明和赋值。
- 有了这些全局观后,再动手写代码。
如果不会写代码怎么办
第一种情况:你有思路、有方法,但代码中一些接口函数名不太清楚。可以考虑用伪代码代替,并如实告知面试官。
第二种情况:你有思路,但不确定对错。这种情况,你应该在问题分析阶段,与面试官进行问题的讨论,避免浪费时间。
第三种情况:你理解了问题,但毫无解决思路。这种情况,更应该在最开始就跟面试官反馈,可以让面试官给与一些反馈,如果实 在是没有信心,可以向面试官表明希望更换一道题。
结束语 | 勤修内功,构建你的核心竞争力
- 勤,即次数多,可理解为是持续不断的意思;
- 修,即练,可理解为预习、学习、复习;
- 内功,即认知,是你对这项技术的理解深度;
勤修内功就是不断温习技术原理,持续加强技术认知。