【JAVA技术】9月阿里社招、同程旅游二面面经分享
面试只是对个人技术及应变能力的一次考验。只有解决了一个问题,你才有机会遇见下一个问题,共勉。
阿里巴巴社招JAVA工程师面经
1、ArrayList、LinkedList、Vector的区别
(1)baiArrayList、Vector、LinkedList类都是java.util包中,均为可伸缩数组。
(2)ArrayList和Vector底层都是数组实现的,所以索引数据快,删除、插入数据慢。
(3)ArrayList采用异步的方式,性能好,属于非线程安全的操作类。Vector采用同步的方式,性能较低,属于线程安全的操作类。
(4)LinkedList底层是链表实现,所以,索引慢,删除、插入快,属于非线程安全的操作类。
2、HashMap和HashTable的区别,Hashmap实现原理
3、String和StringBuffer的区别
(1)String:
•是对象不是原始类型。
•为不可变对象,一旦被创建,就不能修改它的值。
•对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去。
•String是final类,即不能被继承。
(2)StringBuffer:
•是一个可变对象,当对它进行修改的时候不会像String那样重新建立对象。
•它只能通过构造函数来建立,StringBuffer subffer=new StringBuffer();
•对象被建立以后,在内存中就会分配内存空间,并初始保存一个null,通过它的•append方法向其赋值 subffer.append(“hello word”);
(3)字符串连接操作中StringBuffer的效率要明显比String高;
String对象是不可变对象,每次操作String都会建立新的对象来保存新的值。
StringBuffer对象实例化后,只对这一个对象操作。
4、gc的概念,如果A和B对象循环引用,是否可以被GC?
5、Java中的内存溢出是如何造成的 ,知道内存泄漏吗?原因?
6、String s = “123”;这个语句有几个对象产生
7、Exception和RuntimeException的区别,作用又是什么?
8、java异常体系知道吗?error和exception有什么区别?
9、FileInputStream与FileReader区别。
FileInputStream是字节流,FileReader是字符流,用字节流读取中文的时候,可能会出现乱码,而用字符流则不会出现乱码,而且用字符流读取的速度比字节流要快;
10、char型变量中能不能存贮一个中文汉字?为什么?
11、List、Set、Map是否都继承自Collection接口? 他们的区别
12、java反射中的应用场景
13、注解用过吗?作用是什么?
14、java编译时和运行时有什么区别?
15、知道socket吗?和Websocket有什么区别?
【同程艺龙】一年Java经验 一、二面面经(已拿offer)
直接上面经内容:
1. 请求响应断链如何解决?请求下单之后,网络断开了,我们这边请求没接收到下单的结果怎么办?
2. 重复出票怎么处理?重复下单怎么处理?
3. 分布式锁如何实现的?redis分布式锁和zk分布式锁有什么区别?
4. redis分布式锁实现的话,setnx和expire命令,如果A线程将expire操作操作到了B线程了,也就是expire了另一个线程的资源,这种怎么避免?
5. 线程池是什么?
6. Future是什么?有什么作用?
7. 线程池核心数是20个,最大线程数是40个,讲一下任务进入线程池的原理逻辑?
8. 线程池阻塞队列有哪几种?
9. 优先队列了解吗?优先队列底层实现机制?
10. 你说下LinkedBlockingQueue底层阻塞的原理是什么?
11. 你说一下ReentrantLock和Synchronize的区别?
12. ReentrantLock和读写锁的区别?
12. AQS里的setState()是什么时候调用?
13. 讲一下锁的升级策略?
14. HTTP和HTTPS的区别?
15. 对称加密和非对称加密有什么区别?HTTPS是用到了那种加密方式?
16. 看你简历说是熟悉JVM,那JVM有哪几种GC算法?
17. 新生代中为什么会有From Survice和To Survice区?
18. 使用CMS垃圾收集器时,遇到大对象比较多导致频繁GC,该如何解决这种情况?
19. GCRoot是什么?哪些对象是GCRoot?
20. MySQL中有哪些索引类型?
21. B+树和B树有什么区别?
22. 联合索引什么情况下会失效?
23. 最左匹配原则是什么?
24. MySQL有哪几种隔离级别?
25. 幻读是什么?RR隔离级别能解决幻读吗?那RR隔离级别是怎么解决幻读的?
26. 你知道间隙锁吗?间隙锁的作用是什么?是怎么解决幻读的?
27. SpringAOP了解吗?有哪几种实现方式?
28. CGLIB什么情况下会失效?
29. 为什么要同时重写equals和hashcode?
总结:其实场景题还是老样子,回答的不好,然后知识点之间细节没拉满,归根结底就是学的不够好,不够扎实。自己离互联网大厂还是有大差距,接下来还需加倍努力提升自己的水平,要拉满细节!!!
公司:同程艺龙成都
岗位:Java开发工程师 形式:现场面试(二面) 时长:50min
二面 现场部门老大面 是在同程艺龙成都办公地面试的,时间是在周六下午三点,公司周末双休没上班,只有面试官、hr以及前台小姐姐几个人。
- 你在项目中学习到了哪些?或者是遇到了哪些困难?怎么解决的?
- 如何保证你的调用链路的稳定性?如何保证服务调用链路请求的幂等性?
- mq消息的幂等性如何保证?
- mq如何保证顺序消费?
- 线程池创建有哪几种方式?
- 线程池核心参数有哪些?
- 线程池中拒绝策略有几种?分别说一下各自的作用?
- Redis都用到了哪些场景?除了缓存还有其他场景吗?
- 缓存雪崩、穿透、击穿是什么?如何解决?
- 对于穿透解决方案给key对应的value对写为null、未知错误、稍后重试时,如何解决当数据库真的有对应数据时,缓存数据没更新导致正式用户请求访问不到缓存?
- 你刚刚是讲到了布隆过滤器吗?讲一下布隆过滤器的作用以及底层原理?
- 如何保证缓存和数据库数据一致性?
- 对实时性要求比较高的缓存如何保证和数据库数据一致性?
- 在Redis中常用的数据结构有哪些?
- Redis中Hash结构的扩容机制是什么?那你可以讲讲HashMap的扩容机制吗?
- Redis中的过期机制有哪几种?底层都是如何实现的?
- Redis的部署有哪些方式?
- Redis的cluster和Setinel实现原理是什么?
- 数据库的查询优化、排查慢sql以及sql优化是怎么进行的?详细点说明下
- InnoDB中哈希索引实现机制是什么?
- MySQL中唯一索引和聚镞索引相比,性能如何?
- 除了常用排序算法,你还会用到什么算法?或者了解什么算法?
- Redis中跳表的原理了解吗?
- 项目中用过自定义SpringBoot starter吗?starter是如何实现的?
- 有没有做过或了解过大批量数据迁移,类似于大批量MySQL数据迁移到ES中的操作?
- 分布式事务了解吗?你们项目中都用到了哪些分布式事务?都有哪些优缺点?
- 说一下JVM内存模型有哪些?说一下JVM的内存区域?
- 在Java中,有哪些包是直接定义在对外内存中的?
- 线上做过哪些性能排查以及性能优化的操作?
- 了解Java中的happen-before原则吗?
- 除了用锁、volatile之外,如何保证一个线程的变量能被另外一个线程的变量给实时读取到?
总结:本次面试在经过面试官的同意后对本次面试进行了录音,方便之后进行面试复盘。从这次复盘的结果来看,此次部门老大面没怎么问简历上的内容,估计是一面里有面试记录,所以一面面的大部分内容都没有再次问到。从这次面试来看,对于一个知识点你理解了和用你自己的语言表述出来是两种不一样的情况!!然后就是自己在Java技术栈的广度和深度都欠缺太多,想进互联网大厂的话还任重道远啊。许愿Offer。
非常幸运,成功上岸拿到了offer,入职之后还需要继续加倍努力,冲鸭!!!
到此这篇关于文章就结束了!
上述面试题答案都整理成文档笔记。 也还整理了一些面试资料&最新2020收集的一些大厂的面试真题(都整理成文档,小部分截图),有需要的可以 点击进入 查看领取资料。
点关注,不迷路!如果本文对你有帮助的话不要忘记点赞支持哦!