个人经验总结

背景

公司进行大裁员有50%的员工离职。

感想

看着这些一起共事的同事离开,内心非常难受,更愤怒的是连一些优秀的主程也因为团队整体被裁而不得以离开,

我几乎帮不了什么忙,我就说说一些自己作为面试官的一些经验和工作时的一些感受吧,可能对他们有那么一丢丢帮助。

面试

作为公司技术面试官,我想谈谈以我的角度是如何看待面试者的。

笔试题

我喜欢编码的题目,不喜欢选择题。笔试题一般考查时间复杂度、编码规范、注释、异常保护,有的人代码给人一看耳目一新,你可以在短短几秒钟就理解他的主要思路;有的人结果是正确的,但代码看起来很费脑……

总体来说,笔试就是入门坎,只有够到基本线了,就可以了我是不会作为关键评价的。

一面

每个公司都有一个结构化面试题库,比如多线程相关、数据结构相关、数据库、编码技巧等等。我一般在聊项目经历时会抽查问,单独的问题这些技术问题我发现有的知识点我自己都不怎么深入,结果对方却答的比我还优秀。

项目经验

我喜欢聊他曾经印象最深的项目经历,我会深入的和他探讨,比如画下架构图,你在项目中的角色,我会站在我的角度问一些可能涉及到的问题,并咨询他是如何处理的。这样的沟通中,我可以了解到

  • 表达能力。程序员的沟通方式却无法将项目沟通清楚,说明表达能力是有待提高的。

  • 项目投入度。 有的人会把公司重大项目,但自己只是简单的参与者,而说成是自己的大项目来提升自己的能力

  • 参与能力。 在项目中你是简单的执行者,还是一个参与者。如果是你参与者,那么你会在本职工作之外发现项目隐藏的更多问题,并解决它。

  • 技术能力。其中会咨询一些技术细节,看他实际掌握的能力。

  • 合作能力。 团队的沟通、协作能力是否正常

1
聊项目经历的目的,我主要是想了解他在项目中参与能力,如果你是一个合格的员工,那么在做一个项目时,你至少能够回答:这个项目的意义?项目的整体设计?项目中你的角色?项目中你发挥了多大的作用?你是否能发挥更大的作用?

主动思考能力

我一般会问,你觉的目前这个项目中有哪些值得改进的地方(如果项目时间足够的话)。

这个问题主要想了解面试者主动思考的能力。我们在做项目中总会遇到很多不顺心的设计,比如出版本特别耗时?请问你怎么改进,你有改进的想法吗?并付之于行动吗?你的改进效果如何?

1
我更喜欢这些能够主动思考的员工,他们的技术能力并不是最出色的,但他们却能够创造出更多的价值。

学习能力

我会问,如果遇到一个未接触过的技术,请问你的学习过程是怎么样的?这个我完全就是看他怎么说

1
在压力情况下,如何快速的有效学习。

解决问题能力

我会问,你印象最深刻的bug是怎么解决的?

1
如何快速有效的解决bug,是你核心的竞争力

基本上就这些了

工作

这里我想谈谈工作的一些感想,你如何在公司脱颖而出:

  • 找到工作痛点,并解决他

    1
    你做到了前任都做不到的事情
  • 在漩涡中心工作

    1
    一个人应该主动去做核心业务,主动去解决核心问题——这些业务和问题是公司管理层最关注的,如果你做出成绩,最容易被看到。
  • 成为解决问题的高手

    1
    2
    3
    4
    公司最需要什么人?
    能够快速解决问题的人!
    所以,如果你能进入到漩涡中心,并且能够真的解决问题,那就有极大的可能脱颖而出。
    相对地,如果你在漩涡中心,不但不能解决问题,还阻碍问题的解决,也很容易被发现
  • 做好工作汇报

    1
    2
    3
    只会干,不会说——傻把式
    只会说,不会干——假把式
    既会干,又会说——真把式

学习

面对软件众多的技术知识点,这学一点那学一点,很难衔接起来,我的建议你抓住“性能优化”这个主干:

  • 水平性能提升,你需要学习哪些知识? 分布式相关知识学习

  • 垂直性能提升,你需要学习哪些知识?

1
算法、数据结构的差别;各类库、系统、软件的性能差异;cpu设计导致结构体大小的调整、多线程优化、各种共享资源的性能差异;内存相关的优化;存储相关的优化;网络相关的优化 等等

按照如上的学习方法,学习其中的技术原理和知识点,并实践在自己的项目中,你的能力一定会得到极大的提升。

牢记两个“心”

下面是别人总结的:

悟心、匠心

悟心

需求理解能力;

读代码能力;

抽象系统的能力;

匠心

工匠精神,不能仅仅满足功能的可用性,用自己最大的努力将产品最到极致,是我们最终的目标。

修炼

  • 同理心的修炼,认同他人的能力和架构设计;别管他设计的多差劲,认同他
  • 全局观的修炼,保持好奇心和学习的韧性
  • 迭代能力的修炼,学会反思,学会在自我否定中不断成长