【转载】程序员如何取得高薪?
在面试进程中会出现自己水平和同学不相上下,乃至更强,工资却没有他人的高,主要原因有两个:
1、技术面试:没有表现出来自己的能力
2、人力面试:没有与人资谈薪资的技能
今天就和大家一起来分析下技术面试应当怎样做。
在技术面试中一般会从3个方面考核个人能力:项目的开发能力,技术能力的广度,技术能力的深度。
项目的开发能力面试中在个人的开场白后面试官会选择一个简历中的项目或让面试人自己选择项目描写,这里主要是检验面试人的项目能力,包括项目理解力,沟通能力和思维能力等。选择哪一个项目比较适合?描写和公司的业务或和这个职位的业务相干的项目是一个更好的选择,由于相干面试官会更了解业务,所以就要求面试人对项目的描写要更有条理。介绍全部项目的时候 围绕以下几点描写:
1、项目的目标,项目主要解决了甚么问题,是不是能讲明白这点非常重要,只有说明白了问题域,才能使项目的实现更通情达理。
2、项目是怎样实现的,采取了甚么技术,框架,有哪些困难,又是采取甚么办法解决了?这个阶段面试人要仔细的思考一下,是主要体现能力的地方。最忌讳简单的描写实现方式是增删改查,没有难点和亮点。有句老话叫:会者不难,难着不会,所以当开发完成一个项目后总是发现项目没有甚么难度,找不出亮点,其实是已解决的问题都会感觉到比较简单。所以做完项目后总结一下,回顾一下项目开发进程中设计的优点和缺点,发掘一下项目的亮点,使项目更饱满。也不用躲避项目中的缺点,项目没有一挥而就的,不是所有问题都可以完善解决的,所以无妨说出项目的缺点,如果能给出一个补救措施会更好。
3、自己在团队中是什么角色,做了哪些贡献?有哪些收获?重点是哪些收获,由于之前的都是过去式,将来能在新项目做多少贡献才是重要的。所以项目中使用到的技术,框架,技能等,如果能深入研究一下对以后的工作和面试会有比较好的帮助。
技术能力的广度如果上一条是考察项目开发能力,后面考察的就是技术点了。关于技术考察,通常会遇到XXX公司问堆排序/堆排序的时间复杂度/ArrayList和LinkedList优势和劣势/HashMap和HashTable的区分等,项目中也不使用,问这些没有任何用途,纯洁是刁难。工作过一段时间的程序员面试比较讨厌回答基础知识点,首先是工作中用不到,问这些没有意义;其次是所学的基础知识早还给老师了,或就没学会。但是牢固的基础知识是程序员职业能更好发展的推动力。
1、二八理论,程序中80%的代码是为了解决20%的场景,所以怎样优雅的解决开发中那20%的场景就需要我们有超越经常使用知识之外的技术。
2、性能优化,使用适合的技术可以更高效的实现产品功能,聚沙成塔性能就会有明显的性能差别。
3、写而优则架,随着工作经验的积累,大部分人会逐步走上架构师或技术经理的管理岗位,项目的架构,技术选型等都需要更多非代码的技术才能更好的完成。
所以良好的技术广度会使程序员走的更远。那末作为程序员的我们需要学习哪些知识呢?
1、计算机基础:操作系统,原理,数据结构,算法设计与分析,这些知识可以有助于我们了解计算机软件基本的运行原理和运行效力。
2、运用运行环境:linux,apacheinxweb服务器,mysql/oracle等db,redis/memcache缓存等,hadoop,mango等nosql数据存储。
3、开发语言:Java语法,JVM,系统框架(spring系列,struts系列,ibatis/hibernate),各种封装工具类:apache下的
治白癜风西安哪家医院好成都治疗白癜风的医院