面试过程:
中午快吃饭的时候接到京东商城-职能研发部门-财务研发部门的面试邀请,吃完饭后稍作休息就赶紧去约定的地点面试。面试官个子不高不过很有魄力,所在部门楼层很高,由于没有空闲的会议室就带我去楼下的一个休息室内面试。
技术问题:
1,spring的两大特性是什么:ioc(依赖注入和依赖查找),aop(面向切面编程)
为什么要用ioc?我回答的是:将对象交由spring管理,自己无需关注所需要的东西,比方说之前需要东西都得手动去new,但是有了ioc后基本上只需关注需要什么而不需要关注如何获取,我以为我答的挺好的,结果面试官问:“不觉得在spring里面配置bean也很麻烦么?”,一时语塞,答不上来了。
什么事aop:我的回答是:面向切面编程,我在使用的时候用的最多的时候就是事务管理,通过配置将事务切到指定的方法上,在调用方法前开启事务,在方法结束时提交事务,若出现异常则回滚。面试官问:“spring是如何做到的呢?”,回答:“据我所知,spring的aop有两种方式一种是动态代理类,另一种好像是什么代理接口,代理接口这个确实是了解很少,不过之前有了解过一点动态代理类,然后用通俗的语言回答了一下,面试官貌似还是挺满意的”。
2,围绕项目:
如何控制并发:
答,先通过乐观锁控制,然后使用悲观锁(mysql自带的行级锁),在并发较高的地方先更新版本号,让数据库先锁住这一条数据,防止其他线程进行读写操作等等,然后大致问了下最高并发有多少。
3,基础:
了解多线程么?
答,了解一点点,不是特别精通。
java多线程有几种实现方式?
答:
三种。1,继承thread类,重方法。2,实现runable接口。2,实现另一个接口(具体叫什么名字忘记了)。
能说一下后两个接口的区别么?
答,一个有返回值,一个不能有返回值,一个能抛出异常,一个无法抛异常等等
手写一个单例
输出的结果是什么?
String ss=”abcd”;
ss.substring(2);
system.out.println(ss);
答,上来就说是cd(忘记substring一个参数时是什么意思了),面试官说你好好想想,这道题挺糊弄人的,仔细看了一遍后才发现答案应该是abcd
4,数据库
MySQL有几种事务隔离级别?
答,4种,然后分别讲解了一下前三种,但是最后一种确实记不起来了,着重讲一下每种事务隔离级别会产生的问题与后果。以及MySQL的默认隔离级别是什么。在答这道题一时糊涂将spring的事务传播特性打上去了,面试官提醒下了后,问我你刚刚答的是什么?是MySQL的隔离级别么?我才恍然大悟。
5,聊一聊为什么要离职,对自我评价是什么
想学习更高深的技术,谦虚,谨慎,阳光向上,有极强的抗压能力。
二面的时候基本上都是技术问题
1,int x=2;
int y=3;
请在不引入其他变量的时候将两个值交换。
2,请手动证明多边形内角和是360°
3,在java里面有一种线程安全的map是什么?
答,synchronizedHashMap,顺便打了一下HashTable和HashMap的区别以及HashTable性能差的问题,以及在锁分段技术的一些自己的理解。
面试官提出的问题
问题1:
京东的研发人员共分为4个等级:初级,中级,高级,专家。你感觉你属于那一级别?
回 答:
初级。
一句话证明你来面试过
京东的人告诉我为什么会议室都那么忙?