每次双选会后,都能收到小伙伴的抱怨,抱怨自己水平和班内的同学不相上下,甚至更强,工资却没有别人的高。

经过达妹仔细询问和进一步分析后,发现主要原因有两个:

1、技术面试:没有表现出来自己的能力

2、人力面试:没有与人资谈薪资的技巧

下面达妹就跟大家一起来分析一下这两个问题。

技术面试

在技术面试中一般会从3个方面考核个人能力:

1、项目的开发能力

2、技术能力的广度

3、技术能力的深度

1项目的开发能力

面试中在个人的开场白后面试官会选择一个简历中的项目或者让面试人自己选择项目描述,这里主要是检验面试人的项目能力,包括项目理解力,沟通能力和思维能力等。

选择哪个项目比较合适?描述和公司的业务或者和这个职位的业务相关的项目是一个更好的选择,因为相关面试官会更了解业务,所以就要求面试人对项目的描述要更有条理。

介绍整个项目的时候最好围绕以下几点描述:

1、项目的目标,项目主要解决了什么问题,是否能讲明白这点非常重要,只有说明白了问题域,才能使项目的实现更合情合理。

2、项目是怎么实现的,采用了什么技术,框架,有哪些困难,又是采用什么办法解决了?这个阶段面试人要仔细的思考一下,是主要体现能力的地方。最忌讳简单的描述实现方式是增删改查,没有难点和亮点。有句老话叫:“会者不难,难着不会”,所以当开发完成一个项目后总是发现项目没有什么难度,找不出亮点,其实是已解决的问题都会感觉到比较简单。所以做完项目后总结一下,回顾一下项目开发过程中设计的优点和缺点,挖掘一下项目的亮点,使项目更饱满。也不用回避项目中的缺点,项目没有一蹴而就的,不是所有问题都可以完美解决的,所以不妨说出项目的缺点,如果能给出一个补救措施会更好。

3、自己在团队中是什么角色,做了哪些贡献?有哪些收获?重点是哪些收获,因为以前的都是过去式,将来能在新项目做多少贡献才是重要的。所以项目中使用到的技术,框架,技巧等,如果能深入研究一下对以后的工作和面试会有比较好的帮助。

2技术能力的广度

如果上一条是考察项目开发能力,后面考察的就是技术点了。

关于技术考察,一些企业会问面试者一些基础知识点:堆排序/堆排序的时间复杂度/ArrayList和LinkedList优势和劣势/HashMap和HashTable的区别等。

有的学员觉得工作中用不到,所以没太注意这些,或者就没学会,但是拿到高薪的学员都有牢固的基础知识。

1、二八理论,程序中80%的代码是为了解决20%的场景,所以怎么优雅的解决开发中那20%的场景就需要我们有超出常用知识以外的技术。

2、性能优化,使用合适的技术可以更高效的实现产品功能,积少成多性能就会有明显的性能差别。

3、写而优则架,随着工作经验的累积,大部分人会逐渐走上架构师或者技术经理的管理岗位,项目的架构,技术选型等都需要更多非代码的技术才能更好的完成。

所以良好的技术广度会使程序员走的更远。那么作为程序员的我们需要学习哪些知识呢?

1、计算机基础:操作系统,编辑原理,数据结构,算法设计与分析,这些知识可以有助于我们了解计算机软件基本的运行原理和运行效率。

2、应用运行环境:linux,apache/nginx web服务器,mysql/oracle等db,redis/memcache缓存等,hadoop,mango等nosql数据存储

3、开发语言:Java语法,JVM,系统框架(spring系列,struts系列,ibatis/hibernate),各种封装工具类:apache下的commons系列,常用场景开发工具包,HttpClient,JSON包,XML解析类,日志输出工具Log4j等;

备注:因为我是Java开发出身所以这里只列举Java相关知识

4、开发环境和项目管理:eclipse/idea等,maven/ant项目管理,svn/git等代码库等

5、设计思想:面向对象设计思想,OOP七原则,测试驱动开发等

看的这里估计会有很多人犯嘀咕了,完全学会这些要到猴年马月了。参加达内学习,规划学习体系,0基础系统教学,4个月就可以拿道高薪啦~

3技术能力的深度

回想一下,刚开始来达内学习的时候,若和一个同学探讨某个知识点的的深度和自己了解的差不多,就会感觉不过尔尔;当他讲的内容有部分没有了解过的,就会感觉不错有料;当这个人讲出从来没有想过或者没有接触到的时候是不是有点大牛的感觉。

所以推己及人,当面对面试官的时候就某个知识点能讲出足够的深度会给面试官留下深刻的印象,对个人的评价,定级以及入职后的合作都有很大的帮助,因为人会更尊重能力强的人。