前言

  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. cf Round#273 Div.2

    题目链接,点击一下 Round#273 Div.2 ================== problem A Initial Bet ================== 很简单,打了两三场的cf第一 ...

  2. Android JNI 学习(四):接口方法表 & Base Api & Exception Api

    本文我们来总结一下JNI 提供的功能列表及相关的函数表. 注意:请注意使用术语“必须”来描述对JNI程序员的限制.例如,当您看到某个JNI函数必须接收非NULL对象时,您有责任确保不将NULL传递给该 ...

  3. Javascript高级编程学习笔记(34)—— 客户端检测(3)用户代理检测

    用户代理检测 前面的文章介绍的是如何检测浏览器对某一功能的支持情况 但是在实践中我们有些时候免不了需要知道用户到底是用的什么浏览器对我们的站点进行访问 这也是统计用户行为的一部分 用户代理检测这种方式 ...

  4. Java核心技术卷一基础知识-第2章-Java程序设计环境-读书笔记

    第2章 Java程序设计环境 本章内容: 安装Java开发工具箱 使用集成开发环境 选择开发环境 运行图形化应用程序 使用命令行工具 建立并运行applet本章主要介绍如何安装Java开发工具箱(JD ...

  5. HTTP 协议中 GET 和 POST 方法详解

    GET请求报文分析 1.请求行 请求方法 GET(描述该请求采用了什么请求方法),HTTP 1.0 和 1.1 协议中共包含10种请求方法.不过 HTTP 1.1 中只有8种方法. URI 请求WEB ...

  6. 第57节:Java中流的操作以及编码解码

    我的博客: https://huangguangda.cn/ https://huangguangda.github.io/ 前言: 编码解码:编码时将信息从一种形式变成为另一种形式,成为编码.编码为 ...

  7. Spring autowire自动装配 ByType和ByName

    不使用自动装配前使用的是类的引用: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=& ...

  8. MFCC特征参数提取流程概述

      一 概念概述: 在语音识别(Speech Recognition)和话者识别(Speaker Recognition)方面,最常用到的语音特征就是梅尔倒谱系数(Mel-scale Frequenc ...

  9. HC-06蓝牙模块的使用

    HC-06蓝牙模块与HC-05的AT指令变化还是挺大的,在模块上电后红灯闪烁表示未连接成功,常亮表示连接成功,期间只要红灯处于闪烁即是进入了AT模式,可发送AT指令,灯常亮使用AT指令无效.下面是常用 ...

  10. 在 React、Vue项目中使用 SVG

    在一些现代的扁平化设计网站,特别是移动端网站,经常会包含许多简单而清晰的小图标,例如网站图标.用户的默认头像.移动端网页首页底部固定的切换栏等,这些小图标一般都是由美工做好,可能会放到精灵图上,前端再 ...