整体感受:直接是一波流搞定,没有HR问为毛辞职、职业规划之类的问题,都是直接上干货的问技术。笔试40分钟,然后带上试卷直接去面试。面试时间长短就不清楚了,反正我大概面了1个小时左右。
笔试:
1. cookie 和 session 的区别
2. JVM 内存模型
3. SQL注入的原理
4. 悲观锁 和 乐观锁
5. 读程序,输出结果. 关于treemap的
6. linux 基础命令,统计日志中的信息
7. java 分布式集群
8. 一道设计题,具体到数据库的表.大概是淘宝的搜索中,输入手机,会出来很多类型,按品牌按价格区间按手机种类。
还有2道题我记不住了。
面试:
1.介绍你做过的项目,用到的技术,涉及到的模块,然后从项目中问各种技术实现的细节。
2.看你的试卷,叫你讲解做题的思路,以及这样结果的原因。
3.团购6位验证码以及团购成功后,发送到你手机上的条码的实现方式。
4.淘宝上是如何保证库存和订单之间的数据准确性的。
5.索引的原理:能否构建时间索引,时间索引构建后会存在什么问题。
6.你们数据库的数据量有多大,如果保证效率?
7.SQL注入的原理以及如何预防,并举例。
8.使用过Memcache么? 用在项目中哪些地方?
这些是主要的问题,当你回答一个大问题时中间还有很多比较碎的追问性质的小问题。
总体给我的感觉是:氛围很轻松+愉快的,技术层面上还是需要你真正的理解透彻一些关键技术点,才能做到应付各种追问和给出满意的答案。如果只是一知半解想去蒙混过关肯定是不行的,毕竟在支付宝的技术大牛面前,多追问几句,也就把你逼到死角了。
还有一点比较重要的感觉就是,他们比较在意你是否了解当下的一些比较热的技术点,比如淘宝的秒杀,是如何保证高并发下的安全性和性能,新浪微博那种大数据量的发送,怎么就保证正确性和时效性的。
满意的地方:
面试官人挺好的,给我耐心的讲解了一遍淘宝的实现方式以及epay的实现方式。淘宝是通过分布式事物,中间用了一个叫协调者角色的程序,当那边点击购买时,会库存减一,保存一条预扣的状态,但是是个预准备状态,然后做成功后,协调者会在另一个数据库生成订单,然后这个订单也是预状态,等两边都准备好以后,通知协调者,又协调者统一完成这2个数据库的事物,从而达到完成一笔交易的目的,若其中一方失败,则将预扣的数字返回到库存从而实现类似回滚的操作。
不满意的地方:
无