一名三年Java工程师,面试百度、网易挂了,最终斩获蚂蚁offer

前言

我有一件事情一直在坚持,那就是做笔记和写博客。

做笔记,就是记录学习中大大小小的事情,可能是面试问题,可能是一周的学习计划,也可能是一个知识点,总归都是值得记录的东西,对我来说,就是一种积累。而对于博客,我从一开始只用于记录项目,到后来做转载,再到后来写原创,整理系列文章,则更像是一种沉淀。

但是在春招刚刚结束的这段时间,我发现一个问题,之前学过的东西忘记了很多,特别是那些理解的不够深的知识点,总是特别容易忘记。另外我发现,虽然我在笔记中记录了很多的知识点和面试题,但是往往我只看过一次,不会再去看第二次。

这也意味着,虽然记录的内容很多,但是真正消化吸收的内容很少,脑子里充斥着总是那些零碎的知识点和面试问题,对于完整的知识体系知之甚少。这些问题在春招期间也不断地暴露出来,让我思考了很久。

面对如此窘境,我想做出改变,趁着现在时间充裕,我想要为这些内容做一次减法,并且借此机会,推翻自己原有的知识体系,重建新的知识框架。简单说来,就是重新开始学习Java后端,这次我要用一种更高效的方式,避免走之前走的弯路,要用最高效,最合理的方式去复习。由于我之前已经有基础,所以我对完成这一目标有信心,相应地我也为此做出了明确且详细的学习计划。

在完成知识体系重建以后,我把重点转向了另外几件事,一是完善和熟悉我的简历,以便在面试中能够比较好地发挥,二是持续刷题,保持对算法题和笔试真题的手感和熟练度,三则是看面经查缺补漏,我一直认为看面经是很重要的一项复习内容。

下面分享一下这段时间总结的面经

蚂蚁面经(面了三次,两次一面,一次二面)

蚂蚁金服 中间件 一号机

一面:

自我介绍

1、Java中的多线程了解吗?线程池的增长策略和拒绝策略了解吗?说一下。

2、讲一下线程增加的过程和拒绝策略的执行。

3、讲了一下fixthreadpool的增长策略,还有几种拒绝策略。

4、高并发情况下,如何使用线程池?用哪个?一下线程结束要多久?是否在下一个线程结束前完成?

5、表示并发量比较大,所以我说可以考虑并发量是否大于队列长度加上最大线程数量和,如果不超过的话可以是用fixthreadpool。

6、并发juc了解么,有哪些线程安全的list,concurrenthashmap1.8的改动。

7、HTTP协议了解么,和tcp有什么区别。

8、http1.0和2.0的区别,其中哪个更新比较有意义,为什么。

9、Java的网络编程,比如NIO和Socket了解么,说下BIO和NIO的区别吧:

10、说一下NIO的类库或框架

11、倒排索引了解么。讲一下数据库吧,说下sql优化的方式

12、索引什么时候会失效变成全表扫描

13、分布式的paxos和raft算法了解么

14、中间件知道哪些。

15、平时看什么书,怎么学习的。

16、Spring和Springmvc讲一下。

蚂蚁金服 中间件 二号机

一面:

1、自我介绍

2、讲一下ArrayList和linkedlist的区别,ArrayList的扩容方式,扩容时机。

3、hashmap的实现。

4、NIO了解么,讲一下和BIO的区别,AIO呢。阻塞,非阻塞,异步。具体。

5、你说了解分布式服务,那么你怎么理解分布式服务。

6 、你说了解Tomcat的基本原理,了解的是哪一部分,基本架构,connector和container

7 你在项目中怎么用到并发的

8 docker和虚拟机讲一下。

9 有啥想问的

二面

1 项目

2 说一下Spring源码把,它的架构,流程。

3 Spring的bean如果要在实例化过程中修改其某一个成员变量,应该怎么做呢。不通过构造方法,并且AOP也并不能实现。

4 Tomcat的类加载器了解么,回答不了解只了解Java的类加载器。

5 自定义类加载器怎么实现,其中哪个方法走双亲委派模型,哪个不走,不走的话怎么加载类(实现findclass方法,一般用defineclass加载外部类),如何才能不走双亲委派。(重写loadclass方法)

6 布隆过滤器了解么,讲了ip地址过滤的布隆过滤器实现。

7 听说你项目用过docker,讲一下docker的实现原理,说了虚拟机一般要对内核进行虚拟化,docker则用cgroup和namespace分别进行硬件和命名空间的隔离。

8 项目中遇到的最大挑战。

9 项目中学到最多的东西。

10 有什么想问的。

网易面经

一面:

1、Java的集合类,hashmap如何处理冲突,除了使用红黑树和重写hashcode外还有哪些方法。

2、Java的多线程的使用方法,用过哪些。

3、Java的单例模式写一下,写了枚举类。

4、设计模式的几个原则说一下。

5、spring的单例模式是怎么实现的。

6、类加载机制说一下,除了双亲委派,再说一下更具体的过程,什么时候进行静态变量的初始化。

7、mysql的索引讲一下,一级和二级索引的区别,什么时候可以不用查一级索引。

8、MySQL的事务性质怎么实现的,其中的持久性和隔离性说一下。隔离级别有哪些,解决哪些问题,默认级别是哪个,通过什么实现的。

9、redis了解哪些数据结构,使用keys的话会有什么问题,如何解决这个问题。

10、什么时候会发生死锁,有哪些必要条件,有哪些解决办法。

11、http请求过程会发生什么。

12、算法题,云音乐的歌单列表,调整顺序后需要保存到数据库,如何让每次保存的数据量最小

二面:

1、说一下你擅长的东西,博客里写了什么东西。

2、Java的集合类,说一下hashmap都用到了啥。

3、Java的hashmap,头插法和尾插法有什么区别呢,会有什么问题。

4、1.7和1.8有哪些区别,chm呢。aqs呢

5、多线程了解哪些,说一下闭锁和屏障的用法和原理,写一个多人赛跑的线程实例,同时出发并且记录所用时间。

6、说一下springboot,说一下他有什么优点。并且他的注解是怎么使用的,有哪些注解

Java的反射讲一下,如何获取重载方法和私有方法。

7、springmvc中的内容讲一下,disp说下,怎么使用的,做了哪些事情,如何进行初始化的。

http协议有哪些内容,cookie是哪个字段,在文本中如何确定哪个是字段哪个是值。

8、web.xml怎么使用的?有哪些组件,怎么配置的。

9、servlet有哪些方法,init方法实在什么时候执行的。

10、有哪些自己觉得比较好的地方说一下

11、Linux命令了解哪些说一下。

hr面:

hr小姐姐有点好看的。点赞。

1、自我介绍

2、实习经历

3、实习收获

4、评价一下云音乐,和qq音乐比较一下。

5、有什么爱好

6、城市选择,公司选择啥的

百度 智能云 账号和消息部门

一面:

1、项目

2、讲一下AOP吧

3、动态代理和静态代理有什么区别

4、TCP和IP报文是否会分片,分别在什么情况下会分片,TCP分包之后是否还会进行ip分片

5、写一个斐波那契数列

6、讲一下Linux的内存结构,我说只会JVM的,他让我说一下。

二面:

1、项目讲一下

2、排序算法,复杂度,比较。快排的空间复杂度是logn。

3、讲一下OSI七层模型,每层的作用,wifi属于哪一层。

4、线程间的同步用什么方式,使用hashmap时重写哪两个方法,为什么要重写,什么场景下重写。

5、平时用过什么数据结构,list用哪些有啥区别。

6、Spring中的ioc和aop,ioc的注解有哪些,autowired和resource有什么区别,作用域有哪些,autowired如何配置两个类中的一个。

7、写一个单例模式。

8、Java会有内存泄漏吗,三个区分别什么情况下会产生内存泄漏。

三面:

1、主要了解哪些技术。

2、分布式系统怎么设计。

3、最终一致性是什么,举一下强一致性和最终一致性的例子。

4、分布式事务的消息id怎么确认顺序。

5、zk的性能瓶颈怎么克服。

6、跨机房的网络延迟怎么解决。

7、网络这块熟么,说一下socket编程吧。说了一下java的socket。

8、网络编程的NIO和BIO区别,阻塞指的是什么意思呢。

9、socket客户端和服务端的连接过程和通信过程说一下。

10、操作系统熟么,shell和命令熟么。

11、算法熟么。

12、系统怎么设计,设计模式怎么用

13、系统优化怎么做,cpu,IO,内存分别怎么排查问题和调优

14、家乡,女朋友。

根据上面的面试题,小编已经整理好了相关的问的文档,有感兴趣的可以帮助转发文章后,关注私信小编【学习】免费获取这些面试资料

面经答案

一名三年Java工程师,面试百度、网易挂了,最终斩获蚂蚁offer

一名三年Java工程师,面试百度、网易挂了,最终斩获蚂蚁offer

发布了46 篇原创文章 · 获赞 65 · 访问量 3771

猜你喜欢

转载自blog.csdn.net/GYHYCX/article/details/103316763