程序员跳槽攻略(8000字预警!!!)

世人都说:金三银四好时节,现在不跳等啥呢。但是跳槽并不是靠着一时冲动撞出来,需要细心的经营,才能达到预期的效果,这也是为什么身边的人有的人越跳越舒服,有的人越跳越尴尬,接下来的8000字,为大家来讲解一下标准的跳槽动作,大概耗时5分钟,其中大部分为作者亲历经验,欢迎大家多多点赞留言发弹幕

跳槽------准备篇

跳槽的核心是什么?利益最大化!!接下来的所有都是围绕核心展开的

  • 为什么选择跳槽?

公司对你不好么?公司的网络不好么?工资太低么?还是公司是否能为你继续带来升值(不是升职)

第一,温饱出现问题,温饱是社会主义最基础的生存需求,如果不能保证自己作为无产阶级温饱的权利,请果断离开

第二、做的事情是否有价值,无论是对自己升值或者对行业而言很牛X的产品,如果都不是的话,请考虑,其中的升值是多方面的需要自己取舍,虽然我们身处技术行业,但是技术不是唯一对我们有价值的,行业背景,管理经验,流程管理,学习大牛吹牛,都是作为一个职场人值得去关注的事情,这个不像技术,学习到了一种解决方案或者知识点,属于认知和视野的升级,比技术更有价值。适用于发展中的年轻人

第三,公司是否有盈利趋势,在19年,资本市场不再火热,能否盈利,是我们也是资本是否继续支持公司的重要参考维度,今年倒闭的公司诸多,可以未雨绸缪,现金流充盈的可以暂时不用担心。没错说的就是创业公司的你们

第四、机会,对于职场比较资深的你,不会再像第二点中的年轻人,渴望公司给予自己的价值提升,更渴望的是公司能否给以自己足够的支持和空间,做更多有价值有意思的事情,为公司带来更多的价值,完成进一步突破,好拿去吹牛,当然真正的大牛也不会看这个文章,这是个告诉即将成熟的年轻人,如果亟需一个好的机会完成自己的蜕变,证明自己,这个机会如果在当前公司遥不可期或一再的晃点你,请考虑

第五、公司极度不靠谱,以压榨员工为乐趣,请你及时离去,因为他们的战术就是,压榨一批换一批,成本降低到最低,公司利益最大化,最不能忍的是,出尔反尔,出尔反尔,出尔反尔,说起来就来气!!!!哼!

以上五条,不分高低,当发生矛盾,请坚持自己利益最大化的原则,不一定是薪资,温饱,还有可能是梦想或者彻底改变自己的机会(这是说给年轻人的,老年人就不要掺和了,被坑的不够惨么),当然可能是坑,但是放心,“尽人事听天命”会来安慰你受伤的心的,真的会好很多

最后,如果当前没有更好的机会,请维持现状,自己充充电,找找马,不要为了跳而跳,更不要裸辞,19年是寒冬,不要太任性,会感冒的

了解当下形势

大经济环境如何,是14年的火热还是19年的寒冷,这个是关系到跳槽的难度和竞争压力,在14年的大环境下,公司从来不缺钱,缺的就是人,无论水平高低,找一个行业水平薪资的工作完全压力不大,但是在19年的形势下,很多公司纷纷倒下,裁员转型,用人单位少了,市面的求职者多了,供完全大于需,公司要求提升了很多,有更多的选择空间,而且涨薪的幅度被压缩,甚至只能平薪,这是现状。对于2-3年工作呢经验小伙伴,如果不是被裁,尽量减少走动,不要放弃充电,当然有好机会也不要放过,特别强悍的请随意让你知道花儿为什么这么红。毕业生建议考研(本人对研究生有特别的执念)。工作稍长的,其实跳槽压力不大,不会没人要,只是薪资能否接受,平台,岗位是否更好的问题,性价比不高的不建议任性走动

明确利益优先级

薪资,平台,空间,梦想(白眼)

那些更符合你当前利益,做一个先后排名,做选择的时候,总归需要权衡的

非专业建议如下

年限:

  1. 5年内,平台 >=成长>薪资 梦想去死

2. 5-10 空间>=薪资>未来规划 梦想可以回来

3. 10年以上的,请点赞留言发弹幕

平台对于初期的同学,是很好的积累过程,除了专业技术以外,对于职场认知,视野,流程,良好的人脉都是以后相当大的财富,这里的平台,不一定是BAT这么大的公司,可能是中小公司,作风优良,离职率低,开放,人性化,公司战略清晰,已经盈利

公司规模:

  1. 50以内的公司大家尽量远离,不稳定因素太多,良好盈利的除外,

2. 200人以上的公司,可以了解一下,这个规模的公司一般处于上升期,而且公司内也会不 乏一些优质的领路人,而且个人的升值空间比较大,不靠谱的也多

3. 1000上人的公司的不了解

4. 上万人的一般是上市公司,看薪资和部门,行业,是否符合自己预期,此类公司体系完整,升值评级有点难度

最主要是公司能盈利,盈利,盈利

自我评估

1.核心竞争力:专业知识深度广度,最具竞争力的项目经历,

2.其他竞争力:学历, 年龄 ,背景,扩展,软技能

3.当前处境

核心竞争力 是跳槽最大的筹码,这个最考验功夫的,需要积累,当工作中被分配了看似不可能的任务时,应该兴奋起来,这个玩意儿是你彰显竞争力的最佳筹码,迎难而上是最快积累的方法,价值的量变到质变,一定是经过类似的反反复复的折磨,这些实战中的硬仗不是jvm,数据结构理论知识所能比拟的,如果能够融会贯通,实战与理论水乳交融,那就更完美了,知识体系也是如此搭建起来的

理论知识:

1.线程模型 ->JVM->MESI ->线程安全->多线程/线程池->AQS->性能优化

2.java基础->反射代理->设计模式->架构设计->微服务->分布式->一致性/CAP->HA设计

3.file->IO->NIO->linux I/O模型->netty

4.sql->模型设计->索引创建->索引原理->算法

5.高并发->分区->分库分表->缓存->MQ->高性能存储-->运维

(临时想到这么多)

从底层到应用层到架构,梳理一下自己当前的水平,确定一下自己知识深度广度,

深度:知其然也要知道所以然,通晓原理才能更好的解决问题,比如为啥redis突然性能下滑;为什么oracle需要定期重建索引;还在使用业务代码发送MQ进行数据同步,binlog同步了解一下;?数据库索引建的跟屎一样;你们也把MQ当做数据库使用么;选择synchronized关键字还是lock;volatile的玩法好洋气哦;

提高知识深度的技巧就是琢磨为什么,怎么做的?都在用MQ,为什么?能解决什么问题,为甚MQ可以解决?有的MQ吞吐量好,有的低,为什么高,为什么低?支持事务性消费,怎么做的?持久化么?如果你来做,你会怎么设计?这些都是很好的问题,如果每当碰到一个新玩意儿,就深究一下,想不提升都难,想知道为什么,怎么做的答案,方法千万条,思考第一条,过眼不过脑,面试两行泪

广度:知识盲区少,见多识广,任何一个名词,能说个一二三,当然不一定任何特别精通,但是走位大脑里面的索引,需要的时候,拿出来跟大家分享,会少走很多弯路,比如自建MQ集群?不存在的,商业MQ风险更小一点;人肉运维?docker,k8s了解一下;自动化脚本?python xpath满足你的要求?log监控?服务器探针试一下;

提高广度的技巧,多接触,多了解,知名的博客,看看最新的招聘要求,可以了解到一些比较新的技术走向,比如serverless,k8s ,提供了很多有意思,颠覆常规的思想和做法,大家有好的推荐也可以留言提出来;多学习一些其他语言,领域的知识,也很好的扩展机会,比如python中很多有趣的玩法,nltk的ngram算法,selenium工具,xpath,协程编程,这些是单单做java开发的人,很少接触到的。另外一些基本的概念也要了解一下,比如拜占庭问题,状态一致机,CAP,逻辑时钟,装逼或者防被鄙视必备,有时间作者也会整理一下。另外机器学习的贝叶斯,回归等算法,虽然我连公式都搞不清,但心里多少有点概念,知道干嘛用的,这不在最近的数据清洗就用上了。脑子比较闲的话,琢磨一下如果用java来实现,怎么玩会更有意思

最佳项目:

你投入最多 效果最好的一个项目经历,代表了个人的最高实战水平!

在面试过程中,最佳项目讲解及提问环节是少不了的节目,既然是代表个人最高水平的项目,面试官通常做法就是看思路,扣细节;而你的准备工作就是将项目的各个细节琢磨清楚,为什么选择方案A,方案的优劣点是什么,为什么选择这个技术,有没有更好的思路,未来期望做出什么水平,怎么达到等等。这些都是需要日常不断复盘,去思考积累的。如果在这个环节你感动不了我,那基本也就够呛了

数据指标: QPS TPS ,总数据量,压测场景,压测指标,以及在行业内的水平

项目介绍: 总体架构核心功能,最具价值方案 what 是啥 why为什么选择这个方案 how如何更进一步

这些是在面试过程强有力的话题和论据,一定要严谨,同时对于这些数据如何进一步提升的思考,是个人最有利的加分项,也是很好的学习机会

年龄

根个人规划有关,俗话说什么年龄干什么事,30岁之前深耕技术,30岁之后偏向管理,35岁之后很多人在技术上无建树,完全走向了管理道路,35岁技术做技术的要么是技术有成就,要么作为个技术leader,管理3,5人,最尴尬的就是和小自己半轮的年轻人拼绩效,当然转管理也是很长路,不是一年两年能完成的。这一段只是简单吐槽一下,不具参考价值,个人规划为主

当前的个人处境

首先希望大家能正视在职场的起起落落,这是正常现象,跳槽可以解决问题,但是不能解决根本问题,正如马爸爸说的胸怀是委屈撑大的,被奚落,被刁难,背黑锅,都是职场的常规操作,适当保持一点阿Q精神是调整情绪心态的好办法,职场本质是利益,没有什么对错,事情没有做好,屁股没有擦干净,还是要先复盘自己,再琢磨别人,做一个严谨大方有担当的人,总归是招人待见的,抛开其他因素(如人际关系,组织调整),如果当前做的工作,确实在为自己的升值添砖加瓦,跳槽可以缓一缓,无事可做 或者 公司碰到天花板,导致做的事情越来越糟糕,且不补强(招纳更有力的人才),可以考虑跳槽

不足及如何补强

1.理论知识偏窄,偏浅,

2.项目中规中矩,没有值得深挖的地方

这两点如果平时没有意识到,临时的补强都是徒劳,每经过一个项目或者产品迭代或者线上事故,都有进行阶段性复盘,为什么出现这样的问题,当初为什么这么设计,是否真的有必要这么设计,不断的去问问自己的脑子,为什么,问到它怕为止,怂为止,你会发现,很多情况,大牛说的不一定对的,书上说的不一定对,想当然的不一定对,这就是自己方法论诞生的过程,但是不要因为这些问题就否定这些大牛或者书籍,多琢磨自己才是成长的捷径。再说到面试攻略,面试题集锦,建议大家多看,死记硬背挡的过一面,抵不过二面,要动脑子琢磨思考的,原理是什么,怎么用代码实现,有哪些细节。在回答同一个问题时,你能把别人没有想到的阐述出来,已经很了不得了,不要太迷信面试题集锦,始终只是提升自己的一个工具,可以是良药也可能是毒药,照本宣科给自己挖坑的不在少数

3.个人学历硬伤

学历硬伤确实导致很多好机会擦肩而过,鼓励在校的专科生升本,或者考研,毕业的同学起码读一个在职本科,投资自己,有益无害,另外要为自己背书,学历不够,能力来凑,参与一些开源项目,或者自己做一些不错的技术研究,写一些有一些的项目,比如treenpool.com 是作者花了将近一年的时间,使用的是python java 以及开源的前端做的项目,比较复杂,很多时候面试官很感兴趣,乐意去聊聊,为自己加分不少,脑子是个好东西,鼓励大家多拿出来耍一耍

跳槽------技术面试篇

1.自我介绍

2.聊项目

3.谈技术

自我介绍: 毕业院校,从业经历,主要罗列工作经历及主要做的事情,如果太多的话就挑几个突出的公司,每个经历控制在3句话介绍,一般总体3分钟内介绍完毕,不要太罗嗦,语速适中,态度温和。很多面试官见你的时候才拿到你的简历,这三分钟其实是给他看简历用的

技术面环节中,一般通过项目的一些技术点,引入到纯技术的面试环节,这种面试方式对于双方会比较舒服,更像一个热身运动,引导面试者进入状态。二愣子面试官,上来就是理论面试,完全不顾及面试者本身的情况,上来一顿操作,转身就被投诉了

聊项目:

也就是展示你的最佳项目经历,这个阶段,是面试官考察你对于项目的理解,投入,思考 ,技术方面侧重编码,设计等实战能力,个人认为实战价值大于理论水平

项目表述,首先先介绍一些项目背景,整体的架构设计,分为几个模块,自己负责那个模块,核心功能是什么,陈述完后,等待面试官的问题。有经验的面试官有自己的套路,比如直接抓重点,难点,疑点,或者问东问西,无关紧要的,冷不丁抛给你一个问题,让你懵逼,比如,你们的大概用户量多少,pv 多少 qps 多少,tps多少,服务架构。感觉都是很轻松的问题,突然问你,你觉得你们线上最大负载能承受多少或者你们的GC机制是那些,QPS怎么计算方式,通过日志还是第三方监控? 很多时候面试官致力于一些细节来求证你在项目中的价值和真伪,夸大的一些数据或者不懂装懂的的辨别方式就是,抠细节抠细节。因此对于简历中描述的项目数据实事求是,不要超出自己的能力范围!!!

项目数据包括,户量多少,pv 多少 qps 多少,tps多少 数据量,压测场景,压测数据,极限状态下的承载能力,自己是否管理团队,团队规模,坚持实事求是,避免给自己挖坑,然后又圆不回来!!!另外有些面试官的关注点比较奇怪(跟你前期的项目表述有关,使他的关注点偏离),比如项目的高并发是核心功能,他非要纠结登录安全的问题,这种情况,要适时的把他拉回来,把话题往自己优势的环节或者问题引导,比如,登录问题,我们使用XX技术解决,问题不大,主要是洪峰时间,高并发带来的压力给我们造成了很大的困扰,成功的转移注意力,引导其进入自己擅长的模块中来。

新鲜感,给面试官展示不一样的思路想法,可以让面试官更加开心,比如缓存击穿问题,常规做法,使用分布式锁或者线程block等待超时,那为什么一定要让缓存击穿风险存在呢,使用job定时更新缓存,所见及所得,缓存没有就是没有,实时性稍微差一点,考验避免很大的风险和成本。数据同步就非要在业务代码中进行么,碰到事务问题的时候,又要做出选择,或者一定要用job轮询的方式从一个地方复制到另外一个地方,采用binlog的同步方式可以不可以试一下(目前这个技术比较普及),这些操作会告诉面试官,人家是一个善于思考的好同学,跟那些背面试集锦的不一样。

面试官关注点:总体设计是怎样的,难点是什么,怎么解决的,为什么这么解决,有没有更好的方法解决,最后的成果是什么,你做了什么?是否足够有有价值

面试者关注点:阐述自己的大局观,发现问题的能力,解决问题的能力,技术功底,这就是我的价值,一个项目,聊的愉快的话,可以持续20分钟左右;另外没把握的不要往简历里面写,会被自己坑死

理论面试:

高并发场景,怎么解决的,添加了MQ,怎么使用的巴拉巴拉。说到了MQ,底层实现原理有哪些,如何避免消息堆积,如何保证有序性,事务型MQ如何显示的?ES的底层原理什么,与Lucene差别是啥,搜索算法是什么,文件结构是什么,评分算法是什么,深度分页怎么玩,大概罗列一下,常规的组合拳

线程模型 ->JVM/MESI ->线程安全->多线程/线程池->AQS->性能优化

java基础->反射代理->设计模式->架构设计->微服务->分布式->一致性/CAP->HA设计

file->IO->socket->NIO->netty

sql->模型设计->索引创建->索引原理->算法

高并发->事务->性能优化->分开分表->缓存->MQ->高性能存储

从底层到应用层,架构层,来考察你的深度和广度,一般根据这个来定级别

其中还会涉及到一些场景模拟的问题,是考察你的积累,也是对你临场应对能力,分析能力考验,不排除一些场景,只有他们场景中才会发生,问题抛出来,让你一顿分析并解决

如果碰到不会的怎么办,很多面试官会问一些少见的问题,或者很刁钻的问题,这个时候,你可以思考一些,或者现场现场分析一下,如果自己做的话,会怎么去做。对错无所谓,主要是思路,比如微信的定位附近人,换做你,你会怎么做,当时给的思路是网格,后续没有确认是否合理(碰到过很多类似的奇奇怪怪的问题,没有记录下来,很可惜)。

如果碰到SB面试官怎么办?

请保持镇定,实在不爽,就靠技术来碾压他,碾压不了请躺下,毕竟咱们是有专业素养的,当然也可以中断面试,这类的面试官少见。面试过程中,让语速放慢,方便做笔记的了解下。面试官有很多款,严肃的,冷冰冰的,温和的,咋咋呼呼的,自谦的,不要太在意,面试官方式套路各有千秋,正常者居多,主要能在面试过程,最大程度的展示自己的价值,注意引导面试官的方向,基本完成任务。不会就是不会,想不到就想不到,不要死磕硬抗,对个人没有多大意义,倒是有点好笑。能做到这些,成不成就是靠缘分了

最后的技术环节是自由发挥阶段,可以展示一下自己的学习能力和潜力,比如自己造的轮子,作品, 其他领域,其他语言的眼镜,自己写的博客等,都能体现良好是自我驱动能力。这样的人是很多公司乐于接受培养的。

这里建议大家可以适当学一下自己的第二语言,比如js python go比较常用的,不单单可以扩展个人的视野,解决问题的思路,在面试过程中也是不错的谈资,本人第二语言是 js 和python pl/sql现在用的少了,会尝试做很多有趣的事情

每次的面试经历都可以记录下,有意思的问题,面试官的一些建议,平时多记录工作中的问题,是良好的,比如我,很多有意思的问题都忘掉了

非技术环节

团队管理,工作流程,发布流程 测试流程,运维方法,这种送分题,不要丢掉

稀奇古怪的问题

给自己的技术打个分 然后告诉我为什么(这是面试一个挺大公司的最后一面,对方是CTO,全程在听他授课,好尴尬)

2+3 在计算机里面的运行过程(前缀后缀算法)

最近读的什么书 (灌篮高手)

说服我为什么录用你 (帅)

欢迎大家补充!!!!!

反问阶段:

技术团队规模,如果有幸进来,会做哪一块,说一下自己的预期,偏业务,偏技术,是否与自己的预期相契合,跳槽是一个对等公平的选择,不需要迁就。

面试------HR篇

面对HR,秘诀就是价值观要正,永远站在公司角度考虑问题,这样的HR小姐姐最喜欢了, 他们主要看的是个人的价值观,是不是适合公司要求,工作状态,精神状态是否稳定,太自我的不要,格局太低的不要,弄虚作假的不要

为啥跳槽?

官方说辞 公司发展不好,公司不发工资,公司不符合个人发展规划,个人发展瓶颈啊,千万不要说工资太低,领导太差,公司太挫 格局太低,会被抓住问死的

跳槽这么频繁的原因

对于太频繁的,一定要想好,每次跳槽的官方说法,

职业规划?

官方说法,一步一步往上爬,

对下份工作的预期

主要表明自己对于薪资,空间,方向的预期,这个要看自己的真实想法,不要太谦虚。最后不要忘了+一句,希望可以与公司共同发展的,长期合作

谈个人

优缺点,尽量和工作有关,不要扯其他的

优点:工作认真负责,经验丰富, 学习能力强,好相处

缺点,某某方面需要提高,团队管理需要提高,缺少大项目的经验

千万不要说涉及到真实的性格问题,有脚气,脾气不好,好吃懒作,会很尴尬,因为这个操作HR 肯定根本没见过

谈薪资

一般不提倡平薪,除非平台良好,岗位有诱惑力,符合自己的最大利益化,否则免谈(19年可以不一定,据了解平薪居多),正常涨幅在总包(基本+年终奖)20-30%,看个人基数,行业同龄水平,技术面试表现,不要漫天要价,也不要让自己吃亏,无数的经历告诉我,对公司手软,公司连个微笑都懒得给。报给HR时,给一个期望薪资,较高的,因为不管怎么样,都会习惯性砍一下,神如食堂大妈,除非他们要不起!!!!谈薪资之前,一定要问清 工资结构,是否避税,基数多少,五险一金基数多少,当心被宰,去年的平均年终奖多少,其他福利有啥,目前公司的发展情况,盈利情况,规模,也是可以和HR聊一下

总结,跳槽是一个脑力活,需要持续的思考和运营,从准备阶段到奔赴战场,都要有良好的规划,明确好每次跳槽的目的,不断提供自己的筹码是成功的一二法门。以上是哎呀面试过程中总结的诸多经验,希望对大家有所帮助

-

个人介绍:

哎呀,知识体系搭建工具 treenpool.com 的作者,从事服务器端开发7年+,不正经的架构师,目前就职于一家TO B服务商;喜欢技术,喜欢玩,瞎折腾。希望大家多多关注哎呀,多多关注treenpool.com

个人微信号:treenpool 欢迎骚扰

微信公众号:treenpool

treenpool主页:treenpool.com 专注于知识体系的搭建网站,知识积累更高效

哎呀列表:点关注不迷路

哎呀:两程序员玩“锁”,一人抢救无效身亡zhuanlan.zhihu.com图标哎呀:五旬大爷教你一窥redis之谜zhuanlan.zhihu.com图标哎呀:技术生涯第一座大山:5千万级数据联合查询zhuanlan.zhihu.com图标面试时你遇到HR提过的哪些刁钻问题,如何解答的?www.zhihu.com图标

编辑于 2019-03-11