今天在公司面试一个10年工作经验的java技术,整个面试下来感觉很一般,作为一个同样工作差不多10年的程序员来说给我很大的触动。工作了10年我们应该要掌握哪些知识,哪些经验。
今天的面试过程有点按部就班。
首先做自我介绍,我给应聘人的要求就是简单介绍下自己的工作经历以及自己擅长的技术栈这些内容。比较常规主要考察面试人的语言表达能力还有技术情况以便于后续的继续提问。
其次让面试人介绍一个自己觉得比较好的项目(因为工作经验在这边上来就问基础技术感觉不合适),项目的架构情况,自己在项目中的担任的角色以及项目中的难点解决方式啥的。这个缓解主要考察应聘人员的总和实例,解决问题的能力以及是否真正的能够担当他的角色。
之后问了一个乐观锁悲观锁的定义以及使用场景(优缺点吧),问这个问题主要是之前两个环节回答的真心很一般。
最后又挣扎了一下问了一个系统设计相关的,也就是老生常谈的秒杀系统的设计。结果也没有达到预期,面试结束。
整个过程下来一共问了4个问题(包括自我介绍)每个环节应聘人员给我的回答都是没有在点子上。
对于面试尤其是工作年限比较长的人来说,面试你的人他的经验或者说水平不一定比你好,心态一定要好,过程中整理好自己的说辞,就当作在工作中跟同事交流就可以了,其实作为技术面试大家都是程序员交流上真心没有必要特别的怎么样。
对于我们的技术体系或者说知识体系:
首先对于我们自己做的项目一定要熟悉(做了这么多年项目经历一般都很丰富),能够简明的说出项目的业务场景,系统设计考量,以及项目过程中的一些关键点。同时为了防止面试官深挖项目中的技术细节对于一些关键技术有必要去查一些资料。这个环节相对比较容易应付。
其次对于基础知识,对于有丰富经验的开发人员来说我认为不能单单的知道它的使用方式,必须要了解原理就是说对于基础技术点我们要知道它的使用方式(应用层面)还需要知道它的优缺点在哪些场景下比较适合(原理层面),最终就是需要我们对于技术有自己的认识见解能够在不同的场景中合理的应用,形成自己的知识体系能够解决实际问题。
最后对于系统设计,这个是考察一个人的综合能力,我们在这个环节要考虑的不单单是技术细节还需要全局考量,拿秒杀系统来说,如果让你设计你会考虑哪些问题,这个没有一个准确答案考察你对一个系统从立项到最终的使用这个过程中他可能产生的问题或者影响的范围,比如说在秒杀开始页面的访问量是不是很大我们有什么方式来解决,秒杀开始库存的扣减怎么来保证不会超卖,怎么保证下单的性能,秒杀系统对现有常规业务系统是不是有影响需不需要流控,是不是需要单独部署来降低影响,秒杀结束数据统计等等一些问题。
然而目前大环境的关系,现在技术面试也越来越难了,比如现在公司要求增加基础知识的考察要有深度,算法的考察可能会有手撸代码等等这些,在实际工作中运用的比较少但是面试答不上来会很减分这些内容我们可以面试前查一些资料准备一下。
网友评论