技术博客开篇序言の阿里电话面试之窘态

       最近在广州出差,刚好筹划年初辞职,原因不必多说,只是因为现在的公司太不重视技术。昨晚在恒大主场看球,还没开始,接接到一个电话。我知道可能是面试的,当时观众席太吵,我就说不方便接电话,能不能改天再约。最后我弱弱的问了一句,您是哪家公司?那头说是阿里,当时我就吓尿了,作为屌丝程序员,难道就要这么拒绝阿里的电话面试了么?我只能无奈的说好吧好吧。
       第二天同样的时间点,阿里真的又给我来电了,我还以为昨天就给我pass了呢。电话那头是个中年男子的声音,问我方不方便接电话。我当时在吃饭,果断说方便啊。结果面试官直接说,我们来聊聊技术吧。当时我又吓尿了,这么直接的面试,真是第一次见。好了,开始正题吧,来彻底的嘲讽自己的技术基础和这一年半工作都干了些什么玩意。
第一个问题,你知道Java中常用的数据结构吗?好基础的问题,不知道由于紧张还是真被这两年的工作的懒惰惯性给残害了,只回答出HashMap和ArrayList。接着这个问题,面试官再问,请问HashMap是存储数据的原理是什么?或者说是怎么存储数据的?我就回答了说是键和值的方式,也就是Key&Value。我好像没回答到点上,然后面试官开始接着问,HsahMap如果碰到相同的Key值,是怎么存储的?尼玛,当时脑子就一懵,HashMap还会碰到相同的Key值?回来百度下,原来是数组(散列桶)和链表的存储方式(尼玛,这个本科学过啊,还记得那张图呢,不过当时是外教授课,鸟听得懂才怪)。碰到相同的Key,HashMap是存储不了的,只能被覆盖,而采用IdentityHashMap,保证重复值的两个对象,内存位置不一样即可。哎,没研究过HashMap数据结构,准确的来说,我是压根没研究过这些基础的概念实现的原理。并且毕业工作一年半,做的是传统项目采用现有框架,优先实现业务逻辑,哪会碰到这玩意。接下来聊的技术问题,基本都是基础概念的实现原理,然后狠狠的鄙视了自己一番。
       第二个问题,你知道线程以及JDK中对应的类吗?这个还是知道的么,Thread类。接着问题就懵了,Java中多线程如果同时去更新一个对象值,怎么保证数据不错乱?我就瞎扯了,隐约记得有个synchronized,貌似可以加锁啊什么的。貌似不太满意我的答案,然后他就继续问,Java中有哪些类是用来实现线程锁的,具体是怎么实现的,怎么才算是线程安全的类,还有加了锁的静态类,其他线程能不能调用不同的静态方法?尼玛,这真不知道了。回去恶补了Java线程的同步、锁以及程序死锁等知识。我能说这些知识在本科阶段都学过么,只是早就忘的一干二净了。所以记住这次教训,下次一定要过技术面试这一关。
       第三个问题,讲讲StringBuffer的使用场景或者说什么时候使用String什么时候用StringBuffer?这个还相对简单,毕竟也是学过的,经常用到。StringBuffer一般是在在需要对字符串进行增删改查的时候,才用的比较多。然后又问,StringBuffer的实现原理?我也是瞎忽悠了一通,说是类似于动态数组吧。其实都没回答到点上,StringBuffer在处理字符串时,应该是不断的创建新的对象。哎,又该回去补补了。
       印象中第四个问题是问我对虚拟机有没有研究,我还理解成了那个虚拟机,原来他问的是JVM啊。还问了Java的内存机制啊、垃圾回收机制啊?这时候我只想挖个坑,赶紧闪人。
       大概聊了有二三十分钟的样子,等我电话接完,准备回湘餐馆再吃的时候,我朋友说他上厕所期间,服务员把桌子都给清了,我草草草尼玛。想想还是算了,争这口气何必为难服务员呢,这年头都不容易。
       总结一下,基本功本来就不扎实,然后毕业了一年半,实际项目中开发功能只要实现业务逻辑,没有其他要求,所以对自己的要求越来越低。外加一些拖延症和不良习惯,赶脚一整个人生低谷了有木有。就我这种渣渣,去年还拿了个优秀员工,年初领导还说给我加薪1.5K,我都有点不好意思了。不过对现在的公司以及做的产品真是无力吐槽了。在客户现场当项目经理三个月,能感觉的到产品做得是多么的渣渣,然后自己还学不到任何东西,果断思考走人。最近顺便也好好思考了自己的人生,决定走技术的道理,然后跟着互联网改造各行各业的龙卷风走,所以跳槽势在必行。阿里的电话面试及时的点醒了,今年决定开个技术博客,换家互联网成长型公司,开始漫漫的20%的那批程序员的人生道路。

你可能感兴趣的:(技术博客,阿里巴巴电话面试)