作为一名程序员,没有谁没跳过槽
撇开在跳槽时对所“空降”的企业所需要的行业知识知根知底而“得心应手”,从而“稳定”外,其他人可能或多或少都有过因“不适应”新单位环境而又被迫再离开的厄运,以至于在再“找工作”时因为不能“骑马选马”而每况日下!
有32.98%的开发者在过去一年(2013)中曾换过工作,其中有72.5%的人实现了薪资上涨。而在未换工作的开发者中,约有59.3%的开发者同样能够涨薪。
下班前简单做了一张图:
对比两张图可以很直观的看到,薪资涨幅超过30%的程序员比例中,跳槽的(25%)相比不跳槽的(7%)大得多。
所以说,公司愿意花大价钱挖新人却不选择给老员工加薪--其实是几乎所有公司都存在的博弈悖论:
当员工没有跳槽机会时雇主便没有动力提升其待遇,而当他一旦有更好机会准备跳槽时,公司想通过提升待遇也难以挽留。
跳槽“6招”交给你!最后一招必须掌握!
笔者经多年摸爬滚打、又经多名企业跳槽者、企业管理高手及多名国学研究者讨论而总结出如下9招,相信你若把这几点完全“吃透”,你就会在任何企业“落地生根”而开花结果!
第一招、做人低调(这一招最重要)!
无论是什么“资”质的企业,只要是在中国的土地上,做事就永远不是外国的那种“法、理、情”,而是需符合中国国情的“情、理、法”——“情”永远摆在第一位!所以进入一个新企业,你要彻底地放低自己的身架(不是“身价”,“身价”只能靠结果来证明的)
第二招、多做自我反省。
无论你做的事、或说出来的话,当别人误解时,你都不能说“你怎么是个这样的人”、“你是不是有病啊”、“你脑袋正常点好不好”?你应该说“哦!我是不是没交待(或没说)清楚?我再说清楚一下吧,我的意思是……”。他如又曲解,你就再如此说!总之你要多从自身找原因:一切都是你的错——是自己水平“不够”才导致了对方误解、曲解、歪解,才导致了别人做错!如此,就算对方想说你的“不是”,让他也找不到“理由”!
第三招、尊重新企业的原管理模式(也可说是企业文化)。
你要知道:企业管理是没有绝对正确与错误之分的,管理只存在“适不适用”的问题:能适用的就是“好”的,不适用的就是“错”的!
第四招、改革必须是“自下而上”进行。
现在很多跳槽者到新单位发现“问题点”后,针对这些问题点的解决措施,他们就只想“自上而下”推行,即:首先,而且是只与顶头上司(含老板)直接沟通,以为只要上司点头认可就可以推行,就可以实现自己的目标,如此就能体现自己的“价值”了!而根本就没想到:就算上司认可了你的说法,但当你在推行时,一旦你底下有人不满意而成为你的“阻力”(这时你如果想靠你自己去排除这个阻力是有点不可能的了)时,你就会去请求你的上司协助(或出面协调)。
第五招、控制自己永远“不生气”,无论怎样,都要控制好自己的脾气!
工作上的问题,只能是一种同事间的相互影响!只能通过沟通、了解、商量及讨论去解决!而不能夹进自己的个人喜好——你没有理由去要求别人来依你的个性去工作,所以你有什么理由生气?
【有一句话可送给你:狗咬了你,你能再去咬狗吗?以此来提醒与鞭策自己吧!】
掌握了基本做人的八招,最后一招就是你的“硬功夫”了
啥都不会,凭什么跳槽?
大厂面试对技术的考核基本分为三个层次:对于基础知识的考核、对于项目经验的考核、对于项目深度的考核。
a.基础知识主要考核你对 Java 语言本身原理的理解以及各种框架的原理理解。知识点包括但不限于:
- 集合 HashMap 的原理,与 Hashtable、ConcurrentHashMap 的区别?
- Java 线程池的核心属性以及处理流程
- Java 并发包原理、Synchronized关键字、锁
- 线程的生命周期
- JVM类加载机制
- JVM内存模型
- JVM分代以及垃圾回收机制
- Spring Bean 容器生命周期
- Spring AOP 原理
- Dubbo 请求流程以及原理
- 数据库 SQL 优化、数据库索引、索引原理
- ……
面试官一般都会针对简历中描写的知识点刨根问底,不懂的技术千万不要写了解。前段时间参加技术沙龙,京东架构师张开涛、腾讯高级工程师刘泽峰都表示大厂招人现在更注重技术能力的细分板块,你必须在某领域有自己独到的理解。
b.项目理解一般会让你画个架构图,然后从架构图出发,你得清楚每个模块的作用,每个框架的原理以及与其他框架的区别。是否有能拿得出手的项目,并对其原理了如指掌,很大程度关系到你能否通过这次面试。
c.项目思考深度在这一个层次上考核的是你对开源框架的思考深度,这些框架到底好不好,好在哪里,不好在哪里,有什么可以改进的地方。你不仅要对项目本身理解足够深刻,还要跳出项目本身,去思考开源框架本身的问题。
那么要想成功进入BATJ等一线大厂,应该掌握哪些技术能力呢?
1、要具备扎实的Java基础
这里所谓扎实的Java基础不是我们通常所理解的Java语法、面向对象的概念,而是能深刻理解Java的多线程开发,熟练使用NIO技术优化网络编程,了解JVM的底层机制,具备底层性能调优的能力,这些技能恰恰是Java开发人员往往忽略的基础。
2、深入学习常用开源框架
为什么BATJ的面试官总是喜欢问源码?其实我们常用的Spring、MyBaits这样的框架可以说是JAVA里面最经典的教科书,从中你能学习到很多写代码的经验技巧,而去悟开源框架中蕴含的优雅架构设计之道这才是最重要的。
3、高性能分布式系统设计与应用
根据双十一日志统计,前端系统有效请求约60w以上的QPS ,而后端cache的集群峰值近2000w/s、单机也近30w/s,互联网大厂的架构师面对的就是这样的生产环境,所以分布式、缓存、消息这样搭建高性能系统的技术必须掌握。
4、微服务(分布式服务技术)
微服务架构是一种架构风格,整个应用被划分并设计为以业务域为模型的松散耦合的独立服务,方便横向扩展能力、伸缩性强、便于开发和维护等等这些是微服务与生俱来的优势。
5、沟通合作的能力
程序员的战斗,往往不是一个人的战斗,我们如何在一个平台下高效的去重,进行代码review,对功能进行调整、debug,做到在统一的规划下步步为营,混乱的堆代码的过程中找到自己的记录。这一切都依赖于有效的工具,Git、Maven和jenkins。
以上就是成为一名架构师需要掌握的所有技术要点,技术文档和视频资料附上:
这套技术体系是由6名10余年行业工作经验的架构师结合实战经验、一线互联网企业主流技术,归纳整理而成,并针对每一个技术点配有相应的视频详解、源码注释和笔记文档。
跟多部分资料图: