其实,对于找工作这件事儿我一直是很慎重的,毕竟我已年过三十,不像年轻气盛的时候,有大把试错的时间,程序员的黄金年龄也就这么几年,如果选择不好,必然影响未来的工作和生活。如果说二十岁的关键词是“逐梦”的话,那么三十岁的关键词则是“稳定”,稳定的收入,稳定的同事上级关系,稳定的工作节奏,一旦打破稳定,离开这个已经习惯的舒适圈,去找一份新的工作,那就意味着要重新来过,一切又都是未知的,不可确定的,对于三十岁的人来说,不确定意味着风险,我不知道有多少而立之年的人已经做好承担这种风险的准备。
我还是决定离开这个舒适圈,重新找一份工作,十个面试官会有十个人问我同样的问题:你为什么离职,我的给出的理由是,我觉得我还能再拼一把。那么问题来了,三十岁,还能怎么拼,像我这样普通三本毕业,北漂四年多,技术也一般,简历毫无大厂经历的程序员,人生的上限大概也是肉眼可见的上限。但是从内心深处来讲,我是有一些不甘心,世界上没有人会左右你人生的高度,除了你自己,我越来越相信,人生需要一个机会,需要一个好运气,今年的九月份我在BOSS直聘上抱着试一试的态度,投了几个大厂,百度,滴滴,腾讯,美团,京东等等,其实每个程序员的心中都有一个大厂梦,毕竟那是汇聚着精英,也有着其他公司给不了的薪资待遇,当然门槛也较高,面试难度也高出几个层次。除了京东和美团,其他大厂并没有给我一个面试的机会,不过只要有机会就有希望,我以京东面试为例,谈谈我的准备和面试体会。京东是四轮面试,均是以电话面试的形式,第一轮面试主问简历上相关的技术和底层原理,面试时间是40分钟左右,基本上是聊最近在做的这个项目,项目中用到的技术都会问到,我做的这个项目用到了RocketMQ,elasticsearch,redis,mysql等,面试官自然而然的问到了rocketMQ关于消息幂等性的问题,消息生产者消费者模型等,elasticsearch深层分页的问题,redis的集群模式,哨兵模式,mysql的底层引擎B+树等等,这些知识点每一条都能够衍生出很多个子问题。第二轮面试主问Java基础,面试时间在一个小时左右,面试官抛出一个问题,让我给出解释,比如有一道面试题是这样的,“程序在运行过程中,YongGC异常频繁,请你谈谈可能导致的原因”,面试官很擅长通过小问题来了解你对底层原理的掌握程度。第三轮面试是部门经理的面试,面试时长在50分钟左右,着重了解你在团队中的协作能力,解决问题的能力,以及对团队成长所作出的努力和方法,如何确保敏捷开发中迭代时间和质量保证,第三轮面试重点放在了团队相处和沟通交流上。第四轮面试是hr主导的面试,重点问一下你未来的规划方向,以及你在现公司的表现和离职原因,还问了现在的薪资水平和期望薪资,第四轮面试可以说是整个面试周期内最轻松的环节,hr一般沟通能力都很强,在聊天过程中进一步的了解你。
最后我是顺利拿到了京东的offer,在准备时间不是很充裕的情况下,能拿到offer确实让我感到意外,有时候想想,人生真的需要一个好运气,当然,好运气也不会留给一个平时不努力准备的人。总结这次面试,让我悟到了许多,如何在短短的一个小时内让面试官了解你的实力,人品,思维,以及你对未来的规划和展望。得到一个无比珍贵的大厂经历,确实需要长时间的积累摸索,都说台上十分钟,台下十年功,没有这六年的摸爬滚打,我想也不会潜移默化地形成自己的一套做事做人理念,这种理念也会折射到面试当中。首先,打铁还需自身硬,作为程序员,技术的积淀是立足软件行业的根本,扎根的越深,基础越扎实,才不会被历史前进的滚滚车轮所动摇。技术的成长没有捷径,是用心和时间慢慢打磨出来的,当然人的精力不是无限的,在熟知的领域把根扎稳扎深,基础理论知识尤其重要,java多线程,jvm,内存对象模型,数据结构等等,这些都是建立万丈高楼的地基,基础牢,则高楼稳。计算机世界是一个盘根交错,错综复杂的庞大体系,掌握其中的核心的几个,便可以顺藤摸瓜,找到其中的联系,java也一样,基础知识越细腻,也就在开发的世界放开手脚,无论做什么行业都能游刃有余。其次,要做一个有责任心的人,团队中也好,家庭中也好,人人都愿意和值得信赖的人相处,在这个数字经济的时代,失信者寸步难行,令人鄙夷。有人说工作和生活可以分得很开,在公司一个样,在家里另一个样,其实我觉得工作即生活,和团队成员相处的时间远比和亲人相处的时间多得多,如果一个人在公司兢兢业业,努力做好本职工作,不逃避不推诿,肯为项目付出更多的时间,那么他在家肯定也是一个肯负起责任的好男人。工作不是混日子,成长来源于点滴,你的工作态度,你的努力程度,你的人品,在职场中大家都看的明明白白,公司也不是傻到分别不出谁在认真做事,谁在整日划水。即使因为一些原因离职,谁都想从同事的口中听到"这人靠谱",而不是一句违心的“呵呵”。在京东背调的过程中,我不担心会有同事说我的不好,因为离职后还能联系到的同事,一定是交心的同事。最后再说说面试准备过程中的那几天,一定要从招聘岗位的信息中提取关键点,招聘信息中提到的技术点,面试官一定会问,所以要避重就轻,利用下班时间的几个晚上,把招聘要求的技术打磨一下,最好能结合现实中的例子来详解,因为招聘要求的技术假如你全能答得上来,而且能举出实际例子,面试已经成功一大半。然后重点准备下以下几个问题的答案:1 你还有什么问题要问我的吗?
这个问题看起来很好回答,其实是面试官在给你挖坑,如果你直接回答没有,面试官会质疑此次你面试的诚意,面试官所期待的答案,是你关于公司的求知渴望以及对你未来规划的安排考虑,所以这个问题要谨慎对待,最好问一下加入公司后,你在团队中所要承担的是责任是什么,以及公司对于培养员工的政策等信息。
2 你在工作中遇到的技术上最大的困难是什么,你是怎么解决的?
这个问题,如果是很容易就能解决的困难就不要说了,最起码得是花费你好几天甚至好几个晚上的时间来搞定的困难才行,我的回答是我曾经花了几天的时间去试图解决查询性能慢的问题,解决方案是先从业务和功能着手,明确影响性能的几个因素是什么,经过排查我发现单表最多每天会进一千万数据,数据的保存周期是7天,查询还涉及到多个子查询以及分组函数和排序等,mysql中影响查询性能的几个地方,这里都占了。在真实用户使用中发现,客户往往只看重第一页的加载速度,这也是在给重要领导展示系统的面子问题,其次,客户可以容忍数据一定时间的延迟,基于这两个方面,最终的解决方案是,请求第一页查询近一小时内数据,不加任何子查询和分组函数,提高首次查询性能,第二,数据缓存化,避免频繁请求同样数据所带来的性能压力,第三,利用mysql执行计划,找到索引效率的最优点,经过几天的调试测试,终于性能得到有效提高。
3 你为什么离职?
这个问题几乎每个面试官都会问,其实答案无非就两个,第一,钱没给到位,第二,心受委屈了。当然不能和面试官直接说这个,面试官更喜欢听到的是在这家公司我的上限也就如此了,我想去更高的平台发展,良禽择木而栖,就是这个道理,偏安一隅还是一飞冲天,我想每个人的答案都是唯一的,那就是去寻找更好的舞台展示自己。
这些就是我此次面试京东的一些感想和思考,希望对大家有帮助。