背景
公司进行大裁员有50%的员工离职。
感想
看着这些一起共事的同事离开,内心非常难受,更愤怒的是连一些优秀的主程也因为团队整体被裁而不得以离开,
我几乎帮不了什么忙,我就说说一些自己作为面试官的一些经验和工作时的一些感受吧,可能对他们有那么一丢丢帮助。
面试
作为公司技术面试官,我想谈谈以我的角度是如何看待面试者的。
笔试题
我喜欢编码的题目,不喜欢选择题。笔试题一般考查时间复杂度、编码规范、注释、异常保护,有的人代码给人一看耳目一新,你可以在短短几秒钟就理解他的主要思路;有的人结果是正确的,但代码看起来很费脑……
总体来说,笔试就是入门坎,只有够到基本线了,就可以了我是不会作为关键评价的。
一面
每个公司都有一个结构化面试题库,比如多线程相关、数据结构相关、数据库、编码技巧等等。我一般在聊项目经历时会抽查问,单独的问题这些技术问题我发现有的知识点我自己都不怎么深入,结果对方却答的比我还优秀。
项目经验
我喜欢聊他曾经印象最深的项目经历,我会深入的和他探讨,比如画下架构图,你在项目中的角色,我会站在我的角度问一些可能涉及到的问题,并咨询他是如何处理的。这样的沟通中,我可以了解到
表达能力。程序员的沟通方式却无法将项目沟通清楚,说明表达能力是有待提高的。
项目投入度。 有的人会把公司重大项目,但自己只是简单的参与者,而说成是自己的大项目来提升自己的能力
参与能力。 在项目中你是简单的执行者,还是一个参与者。如果是你参与者,那么你会在本职工作之外发现项目隐藏的更多问题,并解决它。
技术能力。其中会咨询一些技术细节,看他实际掌握的能力。
合作能力。 团队的沟通、协作能力是否正常
1 | 聊项目经历的目的,我主要是想了解他在项目中参与能力,如果你是一个合格的员工,那么在做一个项目时,你至少能够回答:这个项目的意义?项目的整体设计?项目中你的角色?项目中你发挥了多大的作用?你是否能发挥更大的作用? |
主动思考能力
我一般会问,你觉的目前这个项目中有哪些值得改进的地方(如果项目时间足够的话)。
这个问题主要想了解面试者主动思考的能力。我们在做项目中总会遇到很多不顺心的设计,比如出版本特别耗时?请问你怎么改进,你有改进的想法吗?并付之于行动吗?你的改进效果如何?1
我更喜欢这些能够主动思考的员工,他们的技术能力并不是最出色的,但他们却能够创造出更多的价值。
学习能力
我会问,如果遇到一个未接触过的技术,请问你的学习过程是怎么样的?这个我完全就是看他怎么说1
在压力情况下,如何快速的有效学习。
解决问题能力
我会问,你印象最深刻的bug是怎么解决的?1
如何快速有效的解决bug,是你核心的竞争力
基本上就这些了
工作
这里我想谈谈工作的一些感想,你如何在公司脱颖而出:
找到工作痛点,并解决他
1
你做到了前任都做不到的事情
在漩涡中心工作
1
一个人应该主动去做核心业务,主动去解决核心问题——这些业务和问题是公司管理层最关注的,如果你做出成绩,最容易被看到。
成为解决问题的高手
1
2
3
4公司最需要什么人?
能够快速解决问题的人!
所以,如果你能进入到漩涡中心,并且能够真的解决问题,那就有极大的可能脱颖而出。
相对地,如果你在漩涡中心,不但不能解决问题,还阻碍问题的解决,也很容易被发现做好工作汇报
1
2
3只会干,不会说——傻把式
只会说,不会干——假把式
既会干,又会说——真把式
学习
面对软件众多的技术知识点,这学一点那学一点,很难衔接起来,我的建议你抓住“性能优化”这个主干:
水平性能提升,你需要学习哪些知识? 分布式相关知识学习
垂直性能提升,你需要学习哪些知识?
1 | 算法、数据结构的差别;各类库、系统、软件的性能差异;cpu设计导致结构体大小的调整、多线程优化、各种共享资源的性能差异;内存相关的优化;存储相关的优化;网络相关的优化 等等 |
按照如上的学习方法,学习其中的技术原理和知识点,并实践在自己的项目中,你的能力一定会得到极大的提升。
牢记两个“心”
下面是别人总结的:
悟心、匠心
悟心
需求理解能力;
读代码能力;
抽象系统的能力;
匠心
工匠精神,不能仅仅满足功能的可用性,用自己最大的努力将产品最到极致,是我们最终的目标。
修炼
- 同理心的修炼,认同他人的能力和架构设计;别管他设计的多差劲,认同他
- 全局观的修炼,保持好奇心和学习的韧性
- 迭代能力的修炼,学会反思,学会在自我否定中不断成长