Java后台工程师面试杂记——不跳不涨工资星人跳槽经历

经过接近一个月的时间,完成换工作这件“小事”,前后总计面试了多家公司,最后也没接到几个offer,不过最终总算尘埃落定,就对这个过程进行一个总结吧。

Java后台工程师面试杂记——不跳不涨工资星人跳槽经历

在某互联网公司工作了近一年的时间,但是频繁的业务需求和大强度的加班,无聊的工作内容以及公司就要搬家的前景,促成了自己换工作的打算,在做出这个打算之后几乎立即就和老大说了这件事情,这个举动结果有好有坏,正面意义是我请假或是懒得请假去参加面试的时候,显得没啥心理负担,负面影响就是如果短时间找不到就只能先滚犊子了。因为面试的是Java后台开发,而且是属于之前没看书纯粹通过面试学习面试的,可能对于刚刚工作一两年准备换工作的Java后台开发更有借鉴意义吧。

创业公司:小微律政,爱旅行,游趣科技

小微律政是法务O2O创业公司,在我面试的过程中正在冲击A轮融资,所以承诺期权,最终给了offer,最终因为自己希望去大公司而最终拒接了offer,不过个人仍然看好他们的产品。

技术方面:之前的技术团队人数较少,面试的时候也比较偏重业务,相对对技术的考察不是很多。

旅游网站主要是做自己的旅游产品,去的部门是做后台数据的,因为去的时候没有带简历而他们也没有打印简历,整个面试就持续了十几分钟就结束了,这一面给我最大的教训就是不要在周五的晚上去参加面试,而且一定要带简历。

游趣科技面试的时候刚刚面试完亚马逊被鄙视了,心情抑郁而且公司产品也不太看好,所以面试的时候就没有太有兴趣,最终谈offer的时候就没麻烦HR了。

中型公司核心部门:先锋支付,京东到家支付,美团支付

面试java支付工程师,很明显这是该公司的核心部门,所以面试考察的东西也十分多。而且这三家公司面试类型相同,结果也都没有给offer,相对来说更有共性。支付工程师主要面试两个方面的知识:数据库、多线程。同时考察队Java基础知识的了解。

Java基础知识:

三家公司都问了java集合类的相关概念,各种集合结构之间内在区别:

ArrayList,Vector,LinkList区别

HashMap,HashTable,ConCurrentHashMap区别

Collections.synchronizedXX 方法的原理

设计模式,这种问题感觉没啥意义,工作中用哪个模式还是靠感觉和经验

Java某些原理:RPC,注解,反射,内存,GC,其中Java内存模型和GC过程几乎必问,通常也比较深入,有时候甚至会跳到其他语言的内存机制上,JVM参数以及相关调优,不过还遇到要求JVM调优经验的(-。-)

Java多线程:对多线程包java.util.concurrent的了解,多线程设计模式Future,ThreadLocal使用及原理,多线程协同demo(纸上代码)

   Java新技术:NIO,Java 8、9,如果对这方面很熟悉,能够给人一种geek范,也许会有加分(如果之前基础知识不好就变成自黑了)

数据库知识:

SQL语句的书写,由于某些支付公司采用oracle数据库,所以对这个数据库最好有一定的了解。

数据库基础知识,join操作,数据库锁,数据库事物特性ACID

NOSQL,memcache,redis区别,使用时数据一致性的解决,负载均衡

数据库索引,索引的添加修改对性能有何影响,其内在数据结构,联合查询的索引使用,为了配合索引sql语句书写规范。

数据库锁,悲观锁乐观锁,锁的粒度以及相应SQL语句,锁隔离界别

企业开发相关框架

这部分各个公司通常都会考察spring-AOP/IOC,然后考察在工作中的使用,这部分是我的弱点,因为实在是没用过。

Tomcat性能调优,相关参数

Nginx,负载均衡

Memcache 一致性Hash

Zookeeper master/slave协同

SSH使用,MyBatis使用,基本框架与原理

如果所在公司内部有开源框架并且工作中涉及到,看过源码并且比较熟悉,框架很有特点,那可以和面试官侃一会,如果框架各种黑点就不要提了。

外企:亚马逊

亚马逊面试总体就是被虐,因为和国内企业不太相同的是,亚马逊比较重视编码规范,所以会进行纸上代码编写的考察,并且问题数量和质量都是其他公司所没有的,第一轮面试两个小时,两个面试官都首先让你介绍一下自己的项目吹吹牛B缓解一下紧张心情,然后面试算法,第一个面试官主要考察综合能力,所以问的比较广,也会问一个简单算法,现在记得应该是最大子段和的问题,不过给出的数组是循环数组,尽管这个问题没有做过,但是自己当时还是给出了一个解法,通过将数组扩大为原来两倍然后给出了一个最优子结构性质,相对内存消耗更大,不过还算是写出来了。

而第二个面试官问了两个问题,简直就是悲剧,第一个是单链表逆转,写了不长时间的的java之后,对这种指针(引用)操作居然变得十分陌生,费了近20分钟才写出来;第二个问题是二叉树最近公共父节点,完全考察二叉树性质的问题,但是在面试的时候连思路都没有自己给出来,然后在面试官提示下写的函数也在边界处理上问题很多,感觉一年工作时间智商下降了~~~~(>_<)~~~~

业务部门(百度,乐视,人人贷,网易电商)

面试这两件公司的内部业务线部门,相对于他们的核心部门,要求更低一些(核心部门简历直接拒*_*),面试问题和的核心部门基本相同,相对而言要求很低。

     感觉面试官就是这么想的:怎么又来了一个蠢货,不过谁叫我们缺人呢,勉强给个offer吧,敢多要工资就滚吧。

    所以得到这种offer也就别想太多了。

Java后台工程师面试杂记——不跳不涨工资星人跳槽经历

找工作除了离开原来的小伙伴,其实更加深刻的一点是让我们认识到差距,也许应该每隔一段时间面试一次打击一下自己O(∩_∩)O

   总体上,对于一个高级Java工程师的要求还是蛮多的,首先是Java基础知识,这点不需要多说了;

   其次是互联网工作中用到的各种技术,数据库,框架,如果了解内在原理最好,如果读过源码就赞了;

   最后如果面试外企或是核心部门,对纸上代码还是有要求的,而且如果面试算法,最好用C/C++ 写,拿java写算法总是感觉别扭,python写就太偷懒了,面试官表示你这么机智又不肯老老实实滚让我们很为难啊。。。

上一篇:java源码解析之String类(四)


下一篇:C++ string类取字符串的左右子串(以特定子串为分界限)