一线大厂Java面试题分享 阿里、拼多多、OPPO、网易一,阿里等

 

阿里一面:时长1h30min(文末有我准备的java面试题的总结)

  • 自我介绍

  • TCP的三次握手,为什么三次握手

  • TCP粘包,保护消息边界和流?

  • 客户端和服务器最多能发送和接收多少TCP连接数?

  • 说一下B树和B+树的区别。

  • 为什么数据库索引中用B+数而不用B树

  • B+树相比B树的优势?我说了查询性能更稳定,他说这样不是降低查询效率嘛,那为什么不用B树呢?

  • 了解数据库索引吗?说一下种类,说一下应用场景。

  • 索引是怎么提高性能的,在哪些列上可以创建索引,在哪些列上不能创建索引

  • 什么时候索引会失效?

  • 怎么知道有没有加索引

  • B+树的叶子结点上存了哪些信息呢

  • 数据库的事务说一下,详细说一下脏读,说一下隔离级别

  • 事务的底层原理是什么呢

  • MVCC详细说一下

  • 说一下Hashmap和CourrentHashMap

  • 红黑树说一下,说一下左旋和右旋,画一下给我看看

  • 说一下并发编程的几个特性

  • volatile关键字的两层语义

  • 它的底层原理是啥呢

  • 手写一个计数器,开10个线程,保证最后计数输出为10

  • 问一下JVM的内存模型

  • 说一下内存结构,那这两个有什么联系呢,为什么要分代

  • 说一下一个对象在内存里面的生存周期。我说一下一些大对象直接进入老年代。然后面试官说我说错了,这个我不是很理解,感觉网上很多都是这么说的,查了一些资料应该也是会直接放进去的,不懂。

  • 说一下GC算法

  • 说一下OutOfMemoryError

  • 类加载详细说一下

  • 说一下四种引用状态

  • 说一下最长上升子序列,nlogn的时间复杂度

 

阿里二面:29min

  • 自我介绍

  • 说一下项目

  • 怎么解决超卖少卖的问题,怎么用数据库配合解决

  • 了解分布式事务吗

  • 说一下分布式唯一ID生成

  • 了解RPC吗,不了解。

  • 了解netty吗,不了解。

  • 说一下你登录注册的模块吧,详细过程

  • 你Token的过期时间为什么不能存在cookie里面呢?没想过

  • 考虑过跨域攻击啥的吗,没考虑

  • 那我就没啥问题了,等会给你发两个题做一下就没了。

题目:

补充如下程序通过N个线程顺序循环打印从0至100,如给定N=3则输出:

thread0: 0

thread1: 1

thread2: 2

thread0: 3

thread1: 4

...

注意线程号与输出顺序间的关系。

 

阿里三面:1h10min

  • 自我介绍

  • 简单说了项目之后开始聊规划,聊人生聊了这么久

  • 算是压力面,表现的不好(等等看还有没有后续吧,唉)


 

 

 

拼多多一面:

  • 首先问了一下在实习,实习是主要干啥了。

  • 简单介绍一下自己。

  • 参加的程序设计竞赛,数学建模竞赛你觉得对你的意义在哪

  • 你以后的发展设想

  • 问了项目部署在哪个环境下:Linux

  • Linux环境下上线一个服务,如果CPU占用太满了,怎么排查。用ps命令鬼扯了一下

  • 怎么查看内存占用。用top命令扯了一下。

  • 说到内存泄漏,问有没有碰到,内存泄漏怎么解决?我说了GC

  • 说了一下怎么判断对象是否存活,介绍了一下GC的算法

  • 问了一下c++每次都要new,delete,但是经常会忘了delete,那么有什么方式解决这个问题?我觉得比较像IOC的原理,就说了用容器去管理对象,我们在外面不用new,只需要从容器里拿,容器帮助我们解决new,delete。

  • 生活场景下什么时候用UDP。

  • 介绍一下TCP,说一下三次连接的过程,为什么不是二次,四次挥手为什么不是四次?

  • 有没有写过这个连接,说了一下课设写过一个简单的聊天服务器,不过就很简单的你发送我回答那种

  • 问了一个我的项目是什么。说了一下是跟着视频写的,但是自己做了一些优化,感觉凉凉。

  • 说一下mysql和redis的区别,感觉回答的不好

  • redis为什么不能代替mysql,如果redis能存大量的数据呢为什么不能?说到了事务

  • 问我项目中哪里用到了,woc,一紧张给忘了哪用了

  • 又扯了一下实习的工作,说下自己对于这个的理解

  • 有没有什么想我的?问了一下工作地点。

 

拼多多二面:

  • 说一下多态的底层的原理?说了一下编译时多态和运行时多态以及JVM调用invokestatic方法然后调用动态分派的过程,通过栈帧的信息去找到被调用方法的具体实现,然后使用这个具体实现的直接引用完成方法调用。

  • 然后问我它是怎么找到对象实际类的?我不知道啊说了一下反射?他说反射太慢了,那我就不知道了,只知道调了命令

  • ArrayList 和 Linklist 的区别?大致都说了一下,扯到 ArrayList 线程不安全,我是个智障忘了 Linklist 线程安全不安全了。就说我还没注意到这个,跳过。

  • 详细说一下 Hashmap 的 put 过程

  • 插入链表的时候是前插还是后***还真没注意,就说没注意,猜测是后插。

  • HashMap 和 TreeMap 的区别

  • 为何要用红黑树? 说了一下插入删除查询的时间复杂度的原因

  • 那为什么不直接用红黑树?说了一下小于8个时候查询什么的O(n)就很优秀了,实现红黑树又比较复杂。

  • 他说这个跟你没关系啊,实现都是底层的事情?那就说了小于8个时候查询什么的O(n)就很优秀了

  • 你为什么一直说个人理解? 我说有的问题我也不能确定我的回答就是正确的,只能通过我已经学过的东西和看过的东西来去确定

  • 写道算法题:问我写 Java 的为什么笔试都是 c++ 写的

给定一个字符串,里面只有数字(0 ~ 9)、字母(a ~ z,A ~ Z),小数点(.),在这个字符串中找出一个最大的合法数字连续子串 123.456 -> 456 123.789.456 -> 789.456 123abc789.4mk56.1cde23 -> 789.4 123.456.789->789

二十分钟写完:

  • 写的稍微有点点问题,但是面试官没看出来,说了一下时间复杂度我说 O(n),他说你这个里面不是又套了一重循环吗,为什么不是 O(n^2) 的

  • 本来说今天就到这结束了,看我没说话又问了一点。

  • 问了一下 c++ 的模板? 我心里我没用过啊,然后说了一下模板不能在局部定义就不知道了

  • linkhashmap 应用场景 我没用过,因为知道是根据 key 插入有序,说了一下先来后到的场景

  • 深拷贝? 我不清楚说了一下拷贝的概念

  • 问了一下 Java 是引用传递还是值传递

  • 问了内存泄漏的场景?我说了这个的示例https://blog.csdn.net/lzm1340458776/article/details/26386585 说得他一脸疑惑


 

 

 

OPPO 一面:

  • 自我介绍

  • static关键字,final关键字。

  • HashMap是不是线程安全的?为什么不是线程安全?

  • courrenthashmap怎么保证线程安全?回答了jdk改版后的区别。

  • 问了CAS是啥,大致的说了一下,过程说的是对的,但是几个字母说错了,尴尬。

  • 线程池有几种,记得有四种,只说了三个名字出来。

  • 说一些你知道的这几个线程池的区别,各自的特点。

  • 说了一下一个新的进程加入到线程池的步骤

  • 说一下线程池的几个重要的参数。

  • 问了我newFixedThreadPool这个线程池的初始化大小是怎么决定的,我说测试一下看一般会有多少线程再来决定,面试官想知道一个理论的方法,我不知道。

  • 问了一下你在项目里面承担了什么样的角色,你觉得比较难的点在哪,怎么解决的?

  • 大致说了一下Redis的持久化,以及前缀树来过滤敏感词,问了时间复杂度和空间复杂度。

  • 不知道空间复杂度是多少。

  • 然后看了我在简历上说在学院的助理干过。问我这个工作是干啥的,中间有没有发生什么事情?

  • 说了一件比较操蛋的事情,然后问我是怎么解决的,自己是怎么想的?

  • 然后问了他Java在OPPO里面会用来干啥,就结束了。

 

OPPO二面+HR面:

  • 前期主要是介绍项目,介绍项目的难点,你是怎么解决的。为什么这样去解决。

  • 你是怎么学习的。

  • 你的日后职业生涯规划是什么。

  • 差不多都是这样的问题吧,都是聊项目。

  • HR面试:

  • 内容被要求保密,但基本上都是差不多HR常问的那些问题。


 

 

 

网易一面:

  • 自我介绍

  • 学习了哪些数据结构?

  • 问了堆和栈的区别:我知道想问操作系统的但是我刚开始一紧张我卡词了然后我说了一下竞赛里面的堆栈,

  • Java内存划分:介绍了一下几个区域,然后还详细说了一下这个里面是放啥的

  • 怎么GC?说了一下GC条件,对象存活判断的两个方法,GC算法

  • 引用计数法的问题

  • new一个对象是放到堆上那么你new一个线程呢,放到哪里? 不知道

  • 问了堆的划分,问了GC Eden区的时候对象会怎么办

  • 问了Java虚拟机初始化的参数,我不知道说了有关年轻代的几个参数

  • 如果老年代满了怎么办,我不清楚说了好像是有个full gc可以操作一下

  • 说一下项目的登录注册功能,说一下如何保持你的登录态

  • 你说了你做性能优化,为什么要做性能优化

  • 说一下你项目中出现的异常

  • 数据库挂掉了是怎么表现的,比方说什么日志? 哎都给提醒了我也不知道了,就说了你网页请求访问是没有响应的,功能都没了

  • 最近看了哪几本书,你怎么学习

  • 比方说你碰到了Redis的一个问题,谷歌不到,认识的人也不会,你怎么办? 我说去官网找客服,谁都可以不会但是开发的人员不能不回会

  • 有没有看过一些开源的源码?一开始尬住了,最近是没怎么看源码,面试官很好问了我又没有看过jdk的,我说了看了hashmap,courrenthashmap这些数据结构的都看了

  • 问了一下为什么长度达到一定的长度要转化为红黑树

  • 有什么问题?问了部门业务,说接下来有段空档期想给点建议好继续学习,说了学习微服务,redis继续深入的了解。

 

网易二面:

  • 先自我介绍一下

  • 问了实习的东西,觉得最难的最有挑战性的点在哪

  • kafka的重复消费? 没说好

  • 问了一下项目,登陆注册功能实现

  • 问了生成验证码的实现

  • 设计一个怎么使得验证码有效期,过了一段时间就过期了。

  • 问了线程和进程的区别。

  • ArrayList的底层原理?怎么扩容?

  • 线程池的概念,好处在哪

  • 多进程和多线程的区别? 没回答上

  • 你有什么想问我的?当场懵逼,问了怎么这么惊讶,我说面试时间太短了,感觉一般面得不好的时间都不长,说面试时间不是固定的。


 

送大家我花了半个多月最新总结的阿里高级Java必考题和答案

扫一扫免费获取

 

还有大厂Java面试总结:

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值