前言

  LZ 15年本科毕业,不知不觉3年过去了,去年底裸辞回到成都来发展,年后开始找工作,面试了几家公司,现在整理整理做个总结,也方便规划下一个3到5年以及和广大想要进阶的Java程序员同胞们共勉。

  首先谈谈裸辞的感受吧:走之前部门很多同事都神秘兮兮的过来问我“小伙子下一家在哪呀?”,LZ很直白:“回家种田哟”,当然表面笑嘻嘻,其实内心心理压力还是有的,而且也在后面的求职过程中印证了这一点:“裸辞是多么痛的领悟”。

失败的面试

1)京东成都:在智联招聘上投了简历,半个小时不到HR就给我打电话约面试(不得不说京东这个效率还是很厉害,当然物流效率也很厉害)。

  面试是两个面试官,一个看起来35岁左右(应该是技术骨干)另一个年轻一点,当然基本所有面试的开场都是自我介绍,然后“骨干”开口了,“你是来面试的高级噶?”,LZ表示没有概念(智联的JD也只是说Java开发)但是没办法也只好随声附和了一下。

  “骨干”:“我看简历上写了你们项目也用到了微服务架构,那你说说Dubbo数据传输时你们是用的什么压缩算法?”,啊,,LZ有点懵,赶紧解释说我们是用的公司内部自己研发的一个服务治理框架。。

       “那你们数据压缩怎么处理的?”  --“骨干”毫不放弃希望

   LZ:“我们的服务治理框架只做了服务注册,发现和治理,服务间的通信协议是用的HTTP,数据报文没做压缩。。”  --Dubbo的数据压缩我真的不知道唉,第一个问题就被问倒。。

  “年轻面试官”:“你们注册中心怎么实现的?”,

   LZ:“也是用的ZooKeeper,原理和机制都类似Dubbo,只不过功能上要简陋很多。。”

  “年轻面试官”:“那你们怎么保证单点的问题?”

   LZ:“集群”  --是不是答错了。。

  各自沉默1分钟后“骨干”接着问:“问题基础点的吧,JDK1.8中 HashMap有哪些新特性?什么情况下HashMap会产生死锁?”

   LZ:“额,不知道”

  “骨干”还是不放弃:“那如果Hash表上的拉链太长,你怎么优化?”

   LZ:“调小加载因子,或者优化hash算法吧。。”

  “骨干”:“如果就是因为某些原因导致某个拉链太长怎么办?”  --绝望,平时工作中都只用到1.6 1.7也很少关注这类信息,再次被问倒

  后面还问了很多问题,两个人轮流问。。像ConcurrentHashMap原理,Netty和Mina,ThreadLocal,垃圾回收器,JVM调优,多线程,怎样设计一个高并发系统,分布式锁,Redis集群的hash一致性算法,Linux命令,Spring IOC,AOP原理和机制,MQ,JS缓存问题等等。

  总结:京东的面试还是很考验基础功底和知识面以及深入理解的程度,可惜LZ目前还是太菜,结果也就可想而知了。虽然失败的滋味很不好受,但是这何尝不是一种美妙的经历呢,把失败带来的沮丧转化成进取的动力,促进自己以后的学习和进步。

2)美团点评:在Boss直聘上投的简历,面试时间也是上午10点,面试开始,面试官问了几个Java基础问题,然后。。

  “说一下HashMap在1.8中有哪些改进?”  --唉,怎么都爱问这个呢,有了前面的教训,LZ当然是很庆幸的,现在想想面试官其实想考验的只是你平时对新知识新技术的关注程度和自我更新自我学习的能力(以后的工作中要注意这些,保持对新技术新知识的渴望)。

  接下来是数据库基础,MySQL索引的实现方式,存储引擎,优化经验,,  --这部分没答好

  传统关系数据库的ACID,事务隔离级别,数据库死锁,死锁产生的4个必要条件,怎么避免死锁

  JVM内存模型,volatile关键字,指令重排序,调优,垃圾收集算法,常用设计模式等等

  然后:手写单例,单链表倒数第K元素,青蛙跳台阶。。  --单链表的问题忘了做边界检查,青蛙的问题由于没时间了,问我思路,当时紧张也没想出来,就说是用排列组合或者递归。。

  总结:应对女面试官的方法就是好好复习书上的知识点,LZ虽然前段时间也把《Java编程思想》拿来出来再啃了一遍,不过还是没能背不出来死锁的必要条件,只是记得A占了B的锁,B占了A的锁,然后相互请求等待。。。美团应该是有一套面试题库,将近90分钟面试过程问了很多概念性的问题,框架,项目经历等等已经没时间问了,感觉这次的面试比较适合应届的毕业生,对概念性知识有很牢靠的记忆(当然这样说有点为自己开脱的嫌疑,总归还是自己基础不牢靠,面试没准备好)。

 3)蚂蚁金服:其实收到阿里的电话面试还是很意外,因为LZ认为以目前的渣渣水平肯定是没机会的,不过好在面试官是个态度很和蔼攻城狮,面试问的一些问题也不算很偏,但是LZ也只是把问题回答了出来,没有表现出亮点来,stop the world,分布式事务,幂等性这一块答的也不是很好,所以P6P7什么的就还是不要想了吧。

  还有其他几家通过的面试经历LZ这里就不再讲了,前面提到裸辞的感受,特别是在经历过几次失败的面试后这种无形的压力、惆怅和不知所措才更加让人刻骨铭心,当然所有好的不好的都是一种经历,也更加有利于以后对自己的鞭策,现目前在一家创业型的互联网公司,从做项目转换到做产品,对软件开发有了新的体会,不管怎样总算是定了下来,也可以抽时间好好想想以后的规划和自己的成长道路。

下一个3-5年

  首先回顾前一个3年,LZ一直在做电信核心系统的开发,虽然随着时间的推移,对整个系统架构,框架技术,业务知识有了更深入的了解,但是放眼整个互联网行业来讲自己的知识面和技术局限性就显露无疑了,通过最近的面试也得到很多体会,高并发,分布式,微服务等等,特别是Paas层的框架,有太多太多可以学的东西了,前面三年左右摇摆不定,没想清楚自己是要往业务线走下去还是深入技术扩大知识面,现在想想所有的技术都是为业务服务的,业务可能会有五花八门,但是技术的方向却是很明确的。以前看过京东成都研究院一个大拿写的一篇文章《逃离局部最优点》https://www.cnblogs.com/mindwind/p/7886278.html,里面写的很好,如果你感觉到在一家公司的上升空间(不管是职级还是技术方面)已经被挤压到自己不能忍受的地步的时候,那么你就应该好好考虑作为一个局部最优解的下一步的发展道路了。

  下一个3-5年,希望夯实基础,研究技术专题,研究框架,立足PaaS层向着中间件的方向发展。

构建自己的技术栈

  回顾这几次的面试经历,作为一名Java程序员,基础知识是重中之重,不管各种PaaS框架遍地生花,基础就是基础,再怎么强调也都不过分,《Java编程思想》是本很好的书,有空就应该拿出来翻一翻,书上的例题都应该亲自敲一敲,接下来是IO/Socket原理,多线程,RMI,reflect,JDK当中的API,JVM等的专题,再就是框架和设计模式:Spring全家桶,ORM,Redis,AOP,Dubbo,FastDFS,JMS等等。

这里再盗一张大拿的图:

一个3年Java程序员的坎与选择的更多相关文章

  1. 如何成为一个优秀的java程序员

    Java程序员有许多应遵循的守则或最佳实践方式.本文概述了每个开发者最应该遵循的10条守则或戒律,如果不遵循它们,将会导致灾难性后果. 1. 为代码添加注释(Add comments to your ...

  2. 一个10年Java程序员的年终总结,献给还在迷茫中的你

    我越来越担心我作为一个Java程序员的未来. 恍然间,发现自己在这个行业里已经摸爬滚打将近10年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作 ...

  3. 一个六年Java程序员的从业总结:比起掉发,我更怕掉队

    我一直担惊受怕,过去,可能是因为我年轻,但现在,我已经不是那么年轻了,我仍然发现有很多事情让我害怕. 当年纪越来越大后,我开始变得不能加班.我开始用更多的时间和家人在一起,而不是坐在计算机前(尽管这样 ...

  4. 面试一个 3 年 Java 程序员,一个问题都不会!

    大家周末愉快,当你看到这篇文章的时候,事情已经过去几天了. 刚从洽谈室走出来,心情很复杂! 栈长面试过很多人,不乏知识渊博.技能顶尖的选手,但从未遇到过工作了三年,却一个问题都答不上来.. 这场史无前 ...

  5. 一个十年java程序员的心得

    展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告 走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的1 ...

  6. 对于长沙互联网发展,一个外来两年Java程序员的所见所感所愿

    惟楚有材,于斯为盛 本文有感于2019长沙互联网求职招聘大会,内容比较多,但都是我自己的一些所见.所感和所愿. 2019年3月的最后一天,参加2019长沙互联网求职招聘大会,看到了很多的招聘企业,也看 ...

  7. 优秀Java程序员必须了解的GC工作原理(转)

    一个优秀的Java程序员必须了解GC(Garbage Collection 垃圾收集)的工作原理.如何优化GC的性能.如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系 ...

  8. Efficient&Elegant:Java程序员入门Cpp

    最近项目急需C++ 的知识结构,虽说我有过快速学习很多新语言的经验,但对于C++ 老特工我还需保持敬畏(内容太多),本文会从一个Java程序员的角度,制定高效学习路线快速入门C++ . Java是为了 ...

  9. Kotlin 喧嚣过后,谈谈 Java 程序员未来的出路

    http://blog.jobbole.com/111422 Java 生态圈 Java 的生态环境开放.自由,在Sun/Oracle.Google.Apache.Eclipse基金会等各大厂商,还有 ...

随机推荐

  1. email program (客户端)演变过程有感

    以下内容全部为个人读后感(参考百度百科的相关资料) 首先我认为电子邮件是一个非常伟大的发明,它不仅成本低,而且传输效率快! 关于它的起源,我从百度百科中看到了两种说法     1.1969年10月世界 ...

  2. 协程 及 libco 介绍

    libco 是腾讯开源的一个协程库,主要应用于微信后台RPC框架,下面我们从为什么使用协程.如何实现协程.libco使用等方面了解协程和libco. why协程 为什么使用协程,我们先从server框 ...

  3. Flume 示例

    1.Syslog Tcp Source sysylog通过配置一个端口,flume能够监控这个端口的数据.如果通往这个端口发送数据可以被flume接收到.可以通过socket发送. #配置文件:sys ...

  4. Java常用的经典排序算法:冒泡排序与选择排序

     一.冒泡排序                             冒泡排序(Bubble Sort)是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为 ...

  5. Java 虚拟机的内存溢出

    在Java虚拟机规范的描述中,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生 OutOfMemoryError 异常的可能. 在Eclipse中进行JVM参数设置 可以直接通过上方菜单栏的 ...

  6. 【详记MySql问题大全集】一、安装MySql

    最近公司要从SqlServer转到MySql,期间在安装环境和数据迁移的过程中,遇到了一些不大不小问题,比如怎么重置密码.怎么设置大小写敏感等等. 这些问题都比较细比较杂,这边解决完可能过几天就忘了, ...

  7. SpringAop实操之记录关键业务请求数据

    AOP,中文名称,切面.在不影响业务代码情况下,实现想要的功能,是个真炫酷的事. aop是个好东西,记录日志是必须的. 记录数据也一样的,那么也是可以用aop来实现的,这里借助注解一起解决问题吧. 因 ...

  8. Spark基础-scala学习(五、集合)

    集合 scala的集合体系结构 List LinkedList Set 集合的函数式编程 函数式编程综合案例:统计多个文本内的单词总数 scala的集合体系结构 scala中的集合体系主要包括:Ite ...

  9. (转)db2top详解

    原文:https://blog.csdn.net/lyjiau/article/details/47804001 https://www.ibm.com/support/knowledgecenter ...

  10. XSS和CSRF

    说到XSS这个问题,XSS又叫跨站请求攻击,大意是说比如我发表了一篇博客,然后我在自己博客里面插入了一段恶意的js脚本代码,这段代码用于获取当前用户的cookie,并发送到我的服务器,当你们在看到这篇 ...