前言

19年毕业到当初也两年多了,最近面试了阿里团体(菜鸟网络,蚂蚁金服),网易,滴滴,点我达,最终收到点我达,网易offer,蚂蚁金服二面挂掉,菜鸟网络一个月了还在流程中...

最终有幸去了网易。

然而要特别感谢点我达的领导及HR,真的十分十分好,很感激他们始终的关照和领导。

面试整体事项

简历要筹备好,联系方式肯定要正确清晰醒目,我的项目经验依照工夫倒序论述,留神形容本人在我的项目中承当的职责,简历的模板尽量抉择简洁的,毕竟程序员大部分还是喜爱简单明了的。举荐boss直聘,我感觉很好用(不是广告)。个别的整体面试流程都是电面->现场面->HR面->等着。不要感觉HR说让你回去等音讯就是GG了,他们也要跟你之前的面试官探讨,再向领导汇报,如果说不急可能还要和其余候选人比拟,所以HR让你回去等音讯相对不是阐明你完蛋了。面试前筹备好自我介绍,1分钟左右就能够,能够写在纸上,电面能够照着念,等你到了现场面了根本也都快背下来你的自我介绍了。筹备好扎实的根底,这是所有的本源,没实力怎么都没用的。面试中你能够把你的面试官往你会的常识上疏导(我遇到过你会什么他不问什么的)。遇到了设计类题目不要焦急,面试官不是为了让你几分钟设计一个高并发高可用设计模式完满的架构,只是想看看你的思路,看看你应变的能力,而后给你些提醒看看你是否迅速的调整。offer都会有的,不要焦急,把面试当成一个交换的过程。

须要筹备的常识

以下为在近期面试中比拟有印象的问题,也就不分公司了,因为没什么意义,大抵分类记录一下,目前只想起这么多,不过肯定要晓得这些问题只是冰山一角,就算都会了也不能怎么样,最最重要的,还是松软的根底,苏醒的头脑。

因为篇幅起因,当前都只放出了面试题目,大家也能够自测一下,看能答出多少题目来,答案我也给大家整顿成文档了,有须要的小伙伴能够【点击此处获取】

Java根底

HashMap的源码,实现原理,JDK8中对HashMap做了怎么的优化。HaspMap扩容是怎么扩容的,为什么都是2的N次幂的大小。HashMap,HashTable,ConcurrentHashMap的区别。极高并发下HashTable和ConcurrentHashMap哪个性能更好,为什么,如何实现的。HashMap在高并发下如果没有解决线程平安会有怎么的安全隐患,具体表现是什么。java中四种修饰符的限度范畴。Object类中的办法。接口和抽象类的区别,留神JDK8的接口能够有实现。动静代理的两种形式,以及区别。Java序列化的形式。传值和传援用的区别,Java是怎么样的,有没有传值援用。一个ArrayList在循环过程中删除,会不会出问题,为什么。@transactional注解在什么状况下会生效,为什么。

数据结构和算法

B+树疾速排序,堆排序,插入排序(其实八大排序算法都应该理解一致性Hash算法,一致性Hash算法的利用

JVM

JVM的内存构造。JVM办法栈的工作过程,办法栈和本地办法栈有什么区别。JVM的栈中援用如何和堆中的对象产生关联。能够理解一下逃逸剖析技术。GC的常见算法,CMS以及G1的垃圾回收过程,CMS的各个阶段哪两个是Stop the world的,CMS会不会产生碎片,G1的劣势。标记革除和标记整顿算法的了解以及优缺点。eden survivor区的比例,为什么是这个比例,eden survivor的工作过程。JVM如何判断一个对象是否该被GC,能够视为root的都有哪几种类型。强脆弱虚援用的区别以及GC对他们执行怎么的操作。Java是否能够GC间接内存。Java类加载的过程。双亲委派模型的过程以及劣势。罕用的JVM调优参数。dump文件的剖析。Java有没有被动触发GC的形式(没有)。

多线程

Java实现多线程有哪几种形式。Callable和Future的理解。线程池的参数有哪些,在线程池创立一个线程的过程。volitile关键字的作用,原理。synchronized关键字的用法,优缺点。Lock接口有哪些实现类,应用场景是什么。可重入锁的用途及实现原理,写时复制的过程,读写锁,分段锁(ConcurrentHashMap中的segment)。乐观锁,乐观锁,优缺点,CAS有什么缺点,该如何解决。ABC三个线程如何保障程序执行。线程的状态都有哪些。sleep和wait的区别。notify和notifyall的区别。ThreadLocal的理解,实现原理。

数据库相干

常见的数据库优化伎俩索引的优缺点,什么字段上建设索引数据库连接池。durid的罕用配置。

计算机网络

TCP,UDP区别。三次握手,四次挥手,为什么要四次挥手。长连贯和短连贯。连接池适宜长连贯还是短连贯。

设计模式

观察者模式代理模式单例模式,有五种写法能够考Spring中应用了哪些设计模式

分布式相干

分布式事务的管制。分布式锁如何设计。分布式session如何设计。dubbo的组件有哪些,各有什么作用。zookeeper的负载平衡算法有哪些。dubbo是如何利用接口就能够通信的。

缓存相干

redis和memcached的区别。redis反对哪些数据结构。redis是单线程的么,所有的工作都是单线程么。redis如何存储一个String的。redis的部署形式,主从,集群。redis的哨兵模式,一个key值如何在redis集群中找到存储在哪里。redis长久化策略。

框架相干

SpringMVC的Controller是如何将参数和前端传来的数据一一对应的。Mybatis如何找到指定的Mapper的,如何实现查问的。Quartz是如何实现定时工作的。自定义注解的实现。Spring应用了哪些设计模式。Spring的IOC有什么劣势。Spring如何保护它领有的bean。

一些较新的货色

JDK8的新个性,流的概念及劣势,为什么有这种劣势。区块链理解如何设计双11交易总额面板,要做到高并发高可用。

一些小倡议

能够去leetcode上刷题换换思路。八大排序算法肯定要手敲一遍(快排,堆排尤其重要)。理解一些新兴的技术。面试之后面试官都会问你有没有什么问题,千万不要没问题,也别傻乎乎的问一些敏感问题。理解你要面试的公司的产品及竞争产品。

总结

无论是哪家公司,都很器重高并发高可用的技术,器重根底,器重JVM。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于本人的施展。同时看中的应该不止薪资,还要看你是不是真的喜爱这家公司,是不是能真的失去锤炼。其实我写了这么多,只是我本人的总结,并不一定实用于所有人,置信通过一些面试,大家都会有这些感触。

如果这些文字可能帮到你,那就最好了,帮不到就当是我本人的一个记录。

最初,心愿大家都能找到适宜本人的公司,开开心心的撸代码~

另外也给大家筹备了一些Java面试材料,蕴含Java面试真题、程序员简历模板、面试外围知识点等,有须要的小伙伴点击下方即可获取!!

—— 传送门 ——