成都蚂蚁金服Java实习面经+吐槽
二面面经(1h35min)
1.自我介绍
2.什么时候开始学java
3.为什么学java
4.怎么学习的,学习历程讲一下
5.平时写过什么代码?关注过什么开源社区?看过什么开源项目?
6.数据库索引结构,为什么用B+树,还有其他的索引结构可以使用么?
7.JVM内存模型,新生代和老年代之间有什么关系?什么时候对象会放进老年代?一个static的hashmap会放进那个代?一个放进threadlocal的hashmap会放在新生代还是老年代?(灵魂拷问,我都要哭了)
8.怎么停止一个线程?如果你一个线程链接服务器的时候,我服务端无限挂起,用interrupt()可以正常停止线程么?
9.HashMap怎么防止哈希冲突的,还有什么方法?
10.装饰器模式和代理模式?用装饰器模式和代理模式同时去实现一个对象的get方法,这两个是有什么区别?JDK中哪里用到了装饰器模式,哪里用带了代理模式?
11.NIO的过程,过程中使用的东西都是什么?(其实我没理解面试官的意思,我讲了操作系统中的文件描述符绑定过程)
12.tcp粘包。NIO过程中tcp粘包。(不会)
13.tcp四次挥手,哪个环节可以连接重置?链接重置是什么?
14.写题:实现一个LRU。阿里伯乐系统,不让我用IDE,直接手撕。其实平时自己写的时候还是挺顺利,在面试情况下还是有点卡壳,好几个地方大脑一片空白。其中get的时候忘了判断是不是null,面试官提醒了我,我抛了个异常,面试官说抛异常好么?这个是一个数据库缓存,你拿到空该怎么办?我赶紧改成return一个null。
15.写题:多线程赛跑问题。用多线程实现,5个运动员赛跑,一个裁判,满足:5个运动员必须同时起跑,裁判必须等所有线程跑完才能进行下一步操作,只要有一个运动员摔倒就直接全部线程停止。
16.实习的时间。
17.你来蚂蚁实习最想得到什么?
18.你有什么要问我的。
PS:这一面要把我面哭了,上来问我你本科不是985和211吧,你研究生也不是吧。我确实不是啊,光明正大歧视我。还有的问题想不起来了,这个面试官喜欢把知识点结合到一起出场景题问,许愿下一面。
————————————————————————————————————————————————
4月29一面之后,被二面的面试官鸽了好几次,到现在还没面上,感觉他们真的好忙啊,成都蚂蚁加班名不虚传。
不过面试官都还挺好的,可以一直推,据说腾讯一推就挂了。
许愿明天面试顺利
-------------------------------------------------------------------------
电话一面(4.29)
今天早上10点打电话来要直接面,我当时正在睡觉啊,一脸懵逼,赶紧和小哥商量改成下午清醒一下。小哥人很好,改成下午面了。感谢感谢。
1.自我介绍
2.先来聊聊多线程吧,先说一下为什么要多线程?多线程有哪些实现方式?
继承Thread,实现Runnable接口,线程池,Callable
3.你刚才说的其实除了线程池开发中都不用,都是学习的时候用的,那你说一下你了解哪些线程池,还有线程池的一些关键参数吧。
balabala
4.那你说一下线程池什么时候提交任务会进入队列
balabala
5.说一下提交任务之后,线程池创建线程和处理任务的几个过程。
balabala
6.线程安全是什么?为什么会出现线程安全的问题?(为什么线程数据之间不共享?)
线程有自己的工作空间
7.看你写了了解数据结构。Map了解过么?HashMap,讲吧,能讲多少讲多少
balabala
8.如果我自己写了一个类,把对象放入HashMap中,需要注意什么?
重写hashcode和equals方法。(自己挖坑)
9.那给你个场景,如果我两个对象的hashcode一样,equals不一样,put进Map会发生什么,拿出来的时候呢?hashcode不一样,equals一样会发生什么?
这个地方卡了好久,最后想到是put的源码中先判断hashcode,再判断equals的问题。
10.HashMap为什么线程不安全,想要线程安全怎么办?
HashTable和ConcurrentHashMap
11.讲吧,这两个都讲一下,为什么你刚才说HashTable性能不好,ConcurrentHashMap怎么保证线程安全的。
12.继续,LinkedList了解么?底层是什么样的?各种操作的时间复杂度。
我这里说了get操作是O(n),面试官说不对。我真没看过底层,我按普通链表说的。
13.那你优化一下get操作,先告诉你JDK中LinkedList不是O(n)。
我:???链表还能不是O(n),这超出我的理解范围了。
14.给你点提示,双向链表,元素个数也知道。
我:难道是看一下get的index离头近还是离尾巴近,哪里近从哪里遍历?O(n/2)?
面试官:对,就是这样。
我:学习了!(内心:这难道不也是O(n)么,老师说常数可以省略的。。。)
15.看你写了框架,Sping的AOP,AOP底层怎么实现的?(我只是写了了解,我真没用过)
16.你看过源码没有?
没有,Mybaitis看过一点点,Spring没看过。(自己挖坑)
17.那你将一下Mybaitis的ORM过程,怎么实现的。
18.数据库怎么查看库中所有的表?
我:????这什么问题,show tables?
面试官:对
19.了解数据库引擎么?
我:了解InnoDB和MyISAM
面试官:讲一下特点和区别
20.InnoDB的索引数据结构了解么?如果不是主键索引,二级索引的结构是什么样子?(就是聚簇索引和非聚簇索引)
21.数据库事务,特点和隔离级别,会出现的各种问题,幻读是什么?(来了来了,数据库三连发)
22.来聊聊计网吧:三次握手过程,cookie和session是什么?
(这里我是背的,但是面试官觉得不对) HTTP协议是一种无状态的协议,我们可以使用cookie和session来保持会话状态。用户发起请求,服务端收到请求处理后可以生成一个sessionId,并且将sessionId存入cookie中返回给客户端,将session的内容存储在服务器上。在下一次的请求中,客户端带着cookie来请求服务器,服务端从cookie中取出sessionId,实现了用户会话状态的保持。这样做有一个缺点就是将一些东西存在了服务器上,在用户量较大的情况下,服务器容量会不足。实际情况中,经常是将所需要的会话状态,比如说登录态直接存入cookie并且返回给客户端,下次请求时,服务端直接取出cookie中的信息和参数信息进行比较,保持HTTP会话状态。总结:session保存在服务端。cookie保存在客户端,并且cookie有大小限制。
23.项目相关,为什么想转专业?(我本科化学,研究生电子)
24.讲一下项目中遇到的困难,吸取的教训,有什么可以改进的地方?
25.讲一下笔试题吧,当时怎么想的,现在有思路么?下来有优化么?
我:有有有。(还好笔试完在牛客看了几个大佬的思路)
26.今天就到这吧,有什么想问的?
#2020年蚂蚁金服春招##蚂蚁集团##实习##面经##Java工程师#