支付宝笔试面试
1. cookie 和 session 的区别
cookie机制采用的是在客户端保持状态的方案,
而session机制采用的是在服务器端保持状态的方案。
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中
2. JVM 内存模型
3. SQL注入的原理
4. 悲观锁 和 乐观锁
5. 读程序,输出结果. 关于treemap的
6. linux 基础命令,统计日志中的信息
7. java 分布式集群
8. 一道设计题,具体到数据库的表.大概是淘宝的搜索中,输入手机,会出来很多类型,按品牌按价格区间按手机种类.
面试:
1. 介绍你做过的项目,用到的技术,涉及到的模块,然后从项目中问各种技术实现的细节
(考察是否有真实工作经验及技术层次)
2. 根据考卷答题讲解解题思路,及原理分析。
(考察Java基本知识)
3. 团购6位验证码以及团购成功后,发送到你手机上的条码的实现方式.
(我讲的是服务器的缓存验证真实性,然后面试官问了我一大堆关于缓存上的问题,我都没答出来)
4.淘宝上是如何保证库存和订单之间的数据准确性的.(考点是分布式事务,遇到这个问题真的是一拍大腿了,喜的是不久前才听大佬讲过分布式,恨的是竟然是公开课,讲的内容并不多,所以我只回答了听到的部分,我认为最主要的应该是分布式锁,然后告诉他了我知道的一些关于分布式锁的知识,但是我知道肯定不全面,甚至有些是错误的,但是面试官人挺好的,给我耐心的讲解了一遍淘宝的实现方式以及实现方式. 淘宝是通过分布式事物,中间用了一个叫协调者角色的程序,当那边点击购买时,会库存减一,保存一条预扣的状态,但是是个预准备状态,然后做成功后,协调者会在另一个数据库生成订单,然后这个订单也是预状态,等两边都准备好以后,通知协调者,又协调者统一完成这2个数据库的事物,从而达到完成一笔交易的目的,若其中一方失败,则将预扣的数字返回到库存从而实现类似回滚的操作.)
5.索引的原理.能否构建时间索引.时间索引构建后会存在什么问题.(索引原理我是回答的堆表索引的构建原理以及查询原理,这里面试官也没有深问了,感觉自己也回答的没那么好。)
6.你们数据库的数据量有多大,(回答:我们是医院的系统,表上亿的数据很正常).问:如何保证效率?
(我是如此回答的,各位自行结合自身的情况参考.答:对高频率使用的表建立索引,尽量使用存储过程,优化SQL查询).
7.SQL注入的原理以及如何预防,并举例.(这都是基础,我就不说了。)
8.使用过Memcache么? 用在项目中哪些地方? (答,在门户主机上使用,缓存session,分布式的时候,统一访问这台主机验证用户session是否存在,来维持会话的状态和实现会话同步.又追问:java代码中如何实现访问门户服务器的这个session池子的? 这段代码是别的组员写的,于是坦白的说,不太清楚。 )
这些是主要的问题,当你回答一个大问题时中间还有很多比较碎的追问性质的小问题,总体给我的感觉是,氛围很轻松+愉快的,技术层面上还是需要你真正的理解透彻一些关键技术点,才能做到应付各种追问和给出满意的答案吧.如果只是一知半解想去蒙混过关肯定是不行的,毕竟在支付宝的技术大牛面前,多追问几句,也就把你逼到死角了.
还有一点比较重要的感觉就是,他们比较在意你是否了解当下的一些比较热的技术点,比如淘宝的秒杀,是如何保证高并发下的安全性和性能,保持学习大概是阿里巴巴的优良传统吧,就像阿里的CEO张勇说的:你必须时刻醒着,睡觉也得睁着眼睛,你必须不断去学习、创新。对面试有啥想法能交流的,可以加我扣扣:3445475825 ,一起研讨最新技术了。
JAVA架构师必了解的知识,你想进阿里吗?