美文网首页互联网科技
精心整理七厂Java面试真题;近六百道题,全都掌握大厂还不任你进

精心整理七厂Java面试真题;近六百道题,全都掌握大厂还不任你进

作者: 风平浪静如码 | 来源:发表于2020-03-13 22:07 被阅读0次

    大家都知道程序员都有一个梦想,那就是进一线互联网公司深造,不要跟我说你不想进去,如果给你一个这样的平台,不管是薪资待遇还是接触的高度来说,对我们程序员来说都是一个机会,我以前有一个同事,就是从阿里出来的,原来是p6,后面来了我们这里当了技术总监,人家的代码写的让你不得不服。

    今天我特意收集了各大厂的面试题,虽然花了一些时间,经过整理之后分享给大家,大家一起来看看什么互联网面试题,一起来认识一下,看看自己能掌握多少!

    面试要注意的点

    • 简历一到两页为最佳,将项目经历写2-3个左右就差不多了,一定要写最有亮点的项目

    • 工作经历的起始时间要写清楚,另外大公司都有背调,不要合并或省略一些比较短的工作经历,影响的可能不只是这次面试,而是之后可能都无法进这家公司

    • 博客没什么好文章,github没好项目就不要写在简历中了

    • 对于面试官的问题,想清楚再回答,如果觉得需要的时间可能比较长,可以跟面试官说我思考下、我整理下思路之类的

    • 面试的过程中注意语速和吐字,本人在做面试官后,发现很多人说话语速很快,或吐字不清,导致原本会的问题也会让面试官觉得你没答到点上(尤其是电话面)

    • 面试完后不要直接问面试结果


    美团

    一面(电话)

    • 自我介绍
    • 项目介绍
    • Redis介绍
    • 了解redis源码么
    • 了解redis集群么
    • Hashmap的原理
    • hashmap容量为什么是2的幂次
    • hashset的源码
    • object类你知道的方法
    • hashcode和equals
    • 你重写过hashcode和equals么,要注意什么
    • 假设现在一个学生类,有学号和姓名,我现在hashcode方法重写的时候,只将学号参与计算,会出现什么情况?
    • 往set里面put一个学生对象,然后将这个学生对象的学号改了,再put进去,可以放进set么?并讲出为什么
    • Redis的持久化?有哪些方式,原理是什么?
    • 讲一下稳定的排序算法和不稳定的排序算法
    • 讲一下快速排序的思想

    二面(现场)

    • 自我介绍
    • 讲一下数据的acid
    • 什么是一致性
    • 什么是隔离性
    • Mysql的隔离级别
    • 每个隔离级别是如何解决
    • Mysql要加上nextkey锁,语句该怎么写
    • Java的内存模型,垃圾回收
    • 线程池的参数
    • 每个参数解释一遍
    • 然后面试官设置了每个参数,给了是个线程,让描述出完整的线程池执行的流程
    • Nio和IO有什么区别
    • Nio和aio的区别
    • Spring的aop怎么实现
    • Spring的aop有哪些实现方式
    • 动态代理的实现方式和区别
    • Linux了解么
    • 怎么查看系统负载
    • Cpu load的参数如果为4,描述一下现在系统处于什么情况
    • Linux,查找磁盘上最大的文件的命令
    • Linux,如何查看系统日志文件
    • 手撕算法:leeetcode原题 22,Generate Parentheses,给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。

    美团-大数据方向

    一面

    • 手写树相关的算法(层次遍历的变种)
    • JVM内存布局
    • 什么情况发生栈溢出
    • 讲一下双亲委派模型,以及其优点
    • 单利模式会破坏双亲委派模型吗?
    • TOP K问题
    • Map与reduce任务数量的指定

    二面

    • O(1)时间内删除单链表中某一个节点
    • 滑动窗口的中位数
    • Zookeeper如何实现master选举
    • Storm的结构
    • Hbase行健的设计原则
    • Hbase的日志合并树,以及为什么Hbase使用这个结构
    • 手写Scala实现wordcount

    三面

    • kafka与传统消息队列的区别
    • 一致性hash
    • 你为面试美团做了哪些准备
    • 其他的都是看什么书啊,如何学习的大数据啊相关的问题

    阿里巴巴(一)

    一面

    • HashMap 实现原理,ConcurrentHashMap 实现原理
    • 红黑树,为什么允许局部不平衡
    • TCP,UDP 区别,为什么可靠和不可靠
    • 一次 HTTP 请求的全过程,包括域名解析、定位主机等
    • TCP 三次握手
    • MySQL 事务是什么?四大特性,四大隔离级别
    • ConcurrentHashMap 和 Hashtable 区别
    • spring IOC 和 AOP,以及各有什么优点
    • 有哪几种常用的线程池
    • 什么情况下使用 Runnable 和 Thread 创建线程,Runnable 和 Callable 的区别
    • 线程方法中的异常如何处理,副线程可以捕获到吗
    • synchronized 和锁的区别,什么情况下使用 synchronized 和 ReentrantLock
    • JVM 的对象分配在哪个区,Class 对象分配在哪个区

    二面

    • 常用的设计模式介绍:单例模式、装饰者模式等
    • Java 会出现内存溢出吗?什么情况下会出现?
    • 双亲委派模型,为什么这样做?
    • 对象什么情况下进入老年代?
    • 快速排序说一下过程
    • AOP 实现原理:动态代理
    • BIO、NIO(如何实现的)、AIO
    • 消息中间件有哪些?他们之间的优劣势?
    • Redis,持久化框架
    • 栈和队列
    • 垃圾回收算法
    • MySQL 的索引
    • Tomcat 类加载器
    • OOM 内存泄漏,什么情况下会出现,如何排查

    三面

    • 介绍你实践的性能优化案例,以及你的优化思路
    • 微服务和 SOA 的区别,优劣势
    • SQL 慢查询的优化方案,索引和表的优化方案。
    • MySQL 与 MongoDB 的区别,海量数据的存储
    • 缓存框架,例如 Redis、Memcached 之间的区别,优劣势比较
    • 请描述一致 hash 算法
    • 分布式 session 的共享方案有哪些,有什么优劣势
    • 高并发情况,系统的优化方案有哪些,以及优先级排序。

    阿里巴巴(二)

    一面

    • ArrayList 和 linkedlist 区别。ArrayList 是否会越界。
    • ArrayList 和 hashset 有何区别。hashset 存的数是有序的么。
    • volatile 和 synchronized 区别
    • 多态的原理
    • 数据库引擎 Innodb 和 myisam 区别
    • Redis 的数据结构
    • Redis 是基于内存的么
    • Redis 的 list zset 的底层实现
    • http 和 https 的区别,tcp 握手过程
    • jvm 垃圾回收算法手写冒泡
    • 手写单例包括多线程下
    • Java 线程间怎么实现同步,notify()与 notifyAll()的区别
    • 数据库的悲观锁和乐观锁应用场景。
    • 排序算法的复杂度,快速排序非递归实现。
    • 海量数据过滤,黑名单过滤一个 url。

    二面

    • list set map 底层使用什么实现的有哪些典型实现
    • hashmap 扩容是怎么扩容的,为什么是 2 的幂
    • concurrenthashmap 为什么线程安全,采用了什么措施应对高并发
    • 线程池的参数有什么意义
    • Springmvc 请求流程
    • Spring IOC,autowired 如何实现
    • Spring boot
    • SpringClound 的基本架构设计
    • Dubbo 和 SpringClound 的区别在哪里,优劣势
    • 说说一致性 Hash 算法

    三面

    • 分布式架构设计哪方面比较熟悉
    • 讲讲你对 CDN 的了解,与分布式缓存和本地缓存的区别
    • 多线程和高并发有什么区别
    • 高并发下有哪些常用的技术解决方案,举三个高并发场景设计例子
    • 说一个你对 JVM 优化的实际案例,包括实际步骤和方法
    • Docker 有使用过和了解吗?Docker 和 JVM 的区别是什么?
    • Docker 的基本架构和使用场景?
    • 负载均衡有接触过哪些开源框架,优劣势是什么?
    • 数据库分库分表需要怎样来实现?
    • 数据库端的常用优化策略?
    • 如果让你来设计秒杀系统,你的设计思路是什么,为什么要这样设计?

    总结:java 的基础知识点,主要围绕在集合类和多线程等:ArrayList、LinkedList、HashSet、HashpMap 的数据结果,以及如何扩容、以及 ConcurrentHashMap 相关的多线程安全等。 JVM 的内存分配、几个常见的垃圾回收算法以及原理、还有对应的 JVM 优化参数需要牢记。 网络:TCP 的三次握手等网络都必问,重点掌握网络协议。 Redis:作为分布式缓存的主力,基本也是 BAT 每次必考,重点是 Redis 的数据结构、内存、 算法、持久化,以及与别的缓存 memcached 的优劣势。 多线程:状态流转、多线程的实现,以及与高并发的区别等。 Spring 框架问得是最多的,BAT 非常喜欢问,重点掌握。 最后就是分布式架构设计 常用的分布式架构设计方案:单点登录、分布式缓存、存储、消息的选型,还有就是数据 库端的优化方案(需要提前了解)。 最好能提前了解深入一个类似秒杀这样的项目,如果面试官问到类似的项目,你能把设计 思路讲出来,这对你的面试结果是很大的加分项。


    阿里巴巴(三)

    一面

    • 自我介绍
    • 谈一个你觉得你学到最多的项目,使用了什么技术,挑战在哪里
    • Spring 的 bean 的作用域?(比如:singleton,prototype 等)
    • Spring 的 IOC 实现原理?没有无参构造函数能实例化吗?有参构造函数注入?(xml 配置)
    • 通过反射,谈到了方法区,然后,类加载机制?
    • synchronized 的实现原理?Volatile 能保证原子性吗?为什么?
    • hashmap 和 concurrenthashmap 的 size 方法怎么实现的
    • JVM 的调优参数?(-Xmn,-Xms 等具体参数设置)
    • 线程池优点,参数,如果我想实现 newSingleThreadPoll,应该怎么配置,构造方法传什么
    • 参数
    • mysql 死锁,怎么解决,如果不要求执行顺序,死锁怎么解决
    • ioc 和 aop 原理
    • 线程的五态?转化过程?
    • TCP 三次握手,为什么三次握手?
    • JVM 内存分区?(主存,工作内存,堆,栈。。。。)
    • 讲一下 GC?
    • 为什么要用老年代和新生代?
    • 新生代进入老生代的情况?
    • 新生代的分区?

    二面

    • 变着法的问了一大堆线程池的知识 (主要考对应的参数)
    • java 内存模型
    • lock 和 synchronized 的区别
    • reentrantlock 的实现
    • hashmap 和 concurrenthashmap
    • B+树和 B-树的区别
    • 复合索引
    • 聚集索引和非聚集索引的区别?
    • 数据库索引 主键和唯一索引有什么区别
    • 索引失效条件,什么时候该建立索引
    • innDB 和 MyISAM 的区别?
    • 线程安全(阻塞同步,非阻塞同步,无同步)

    三面

    • 主要高并发和分布式架构设计
    • 服务器模型以及之间的区别
    • 线程池的设计
    • 线程池如何做负载均衡
    • 如何实现线程调度算法
    • 复合索引是如何实现的?
    • 如何设计单点登录,单点登录的原理
    • redis 缓存和 memcached 缓存的区别,以及各自的优劣势
    • 大型高并发网站如何做性能优化:Web 性能、数据库性能、应用服务器性能等。
    • 实践中如何优化 MySQL:SQL 语句及索引的优化、数据库表结构的优化、系统配置的优化、硬件的优化
    • 分库分表和读写分离如何设计
    • 微服务架构:dubbo 和 springcloud 的区别,以及各自对应的使用场景。

    百度

    一面(现场)

    • 自我介绍
    • Java中的多态
    • Object类下的方法
    • Finalize的作用和使用场景
    • Hashcode和equals
    • 为什么要同时重写hashcode和equals
    • 不同时重写会出现哪些问题
    • Hashmap的原理
    • Hashmap如何变线程安全,每种方式的优缺点
    • 垃圾回收机制
    • Jvm的参数你知道的说一下
    • 设计模式了解的说一下啊
    • 手撕一个单例模式
    • 快速排序的思想讲一下
    • 给个数组,模拟快排的过程
    • 手写快排
    • 设计题,一个图书馆管理系统,数据库怎么设计,需求自己定

    二面(现场)

    • 自我介绍
    • 项目介绍
    • Redis的特点
    • 分布式事务了解么
    • 反爬虫的机制,有哪些方式
    • 手撕算法:反转单链表
    • 手撕算法:实现类似微博子结构的数据结构,输入一系列父子关系,输出一个类似微博评论的父子结构图
    • 手写java多线程
    • 手写java的soeket编程,服务端和客户端
    • 进程间的通信方式
    • 手撕算法: 爬楼梯,写出状态转移方程
    • 智力题:时针分针什么时候重合

    腾讯

    一面

    • 自我介绍
    • TCP与UDP的区别
    • TCP三次握手说一下(把流程说一遍,这里以为会继续问为什么不是两次或者四次,结果没有)
    • 看你项目用到线程池,说一下线程池工作原理,任务拒接策略有哪几种
    • 进程和线程的区别
    • ArrayList与LinkedList的区别
    • 线程安全与非线程安全集合说一下,底层怎么实现的(hashmap,concurrenthashmap)
    • Java内存模型,方法区存什么
    • 数据库事务隔离级别说一下
    • synchronized和lock区别,可重入锁与非可重入锁的区别
    • 说说悲观锁和乐观锁的区别

    二面

    • 说一下你对哪个项目比较熟悉、为什么做这个项目
    • 项目采用了什么架构,数据库如何设计的
    • 数据库由哪些表,为什么有这些表
    • 主要有哪些核心模块,模块之间如何通信的
    • 如何保存会话状态,有哪些方式、区别如何
    • 分布式session如何管理,你有哪些方案
    • 学过数据结构和算法吗(当然),你说说二分搜索的过程
    • 说一下快排的过程,写一下伪代码
    • 了解哪设计模式,举例说说在jdk源码哪些用到了你说的设计模式

    三面

    • 说下你平时看的一些技术博客,书籍。
    • linux 下的一些指令。
    • 工作中你觉得最不爽的事情是什么。
    • 说下你的优缺点。
    • 有没有想过去创业公司。
    • 写个 strcpy 函数。
    • 说说你自己的性格。
    • 给你一个系统,后台的逻辑已经实现了,但是前端加载很慢,怎么检测。
    • 以后可能要学习很多新技术,你怎么看。
    • 项目中遇到的困难(提前想好,并且把实现或者优化方法说清楚)。
    • 系统的量级、pv、uv 等。
    • 应对高并发的解决办法(分布式)。
    • 在项目中主要负责了哪些工作。
    • nginx 的负载均衡。
    • 分布式缓存的一致性,服务器如何扩容(哈希环)。

    HR面

    • 平常怎么学习的
    • 兴趣爱好
    • 觉得自己前面几轮面试怎么样
    • 除了Java还研究过其它什么技术(我说AI,区块链)
    • 跟我介绍一下区块链~
    • 怎么看待国内区块链的发展
    • 跟我说一下你认为最具有挑战性的项目

    网易

    一面

    • 自我介绍
    • 微服务的架构介绍,微服务与SOA的区别
    • 分布式事务处理
    • spring特性,ioc,aop原理及实现。
    • java concurrent包下的的东西,和其中的实现,concurrentHashMap原理和ThreadPoolExcutor原理。
    • linux常用命令,如何查看日志。
    • 项目用到了spring cloud什么组件,分别作用是什么,原理是什么。
    • java反射原理
    • hashmap原理
    • kylin的构造,在二次开发中你做了什么事情。
    • 二次开发学到了什么
    • hive,hadoop,hbase基本架构。
    • 手写生产者消费者代码。
    • 使用concurrent包下的来实现生产者消费者。

    二面

    • memcached扩容/memcached原理/路由算法/为什么要分为多个slab
    • 死锁怎么预防
    • 怎么检测死锁
    • ArrayList和LinkedList/一亿个int要用哪种
    • 长连接问题,连接过程网络断开怎么办,在客户端和服务端分别需要做什么处理(面试官提示心跳包,无奈还是不了解)
    • spring事务,spring事务实现原理。抛出异常之后回滚情况。启动的线程中出现异常会如何处理。
    • 分布式事务处理和实现。
    • 手写线程安全的单例模式
    • 查看错误日志,怎么错误排查,顺序是怎样的。

    三面

    • 主要是问项目
    • 自己最擅长的技术项目,详细介绍架构设计、负责的核心内容
    • 手画改项目的技术难点,以及流程。
    • 手画该项目的集群部署图
    • 项目合作方面
    • 项目是多少个人完成的,你完成了什么内容
    • 你们是如何进行沟通的。
    • 项目中学到了什么。
    • 如果保证代码规范。

    今日头条

    一面

    • linux 网络模型
    • b+树
    • 阻塞队列
    • redis 和 MongoDB 的区别。几个概念对比,还有底层实现。
    • 算法题: merge k sorted list,时间复杂度如何?
    • HashMap 如果一直 put 元素会怎么样?hashcode 全都相同如何?equals 方法都相同如何?
    • ApplicationContext 的初始化过程?初始化过程中发现循环依赖 Spring 是如何处理的。
    • GC 用什么收集器?收集的过程如何?哪些部分可以作为 GC Root?
    • Volatile 关键字,指令重排序有什么意义?
    • synchronied 怎么用?
    • 并发包里的原子类有哪些,怎么实现?cas 在 CPU 级别用什么指令实现的?
    • Redis 数据结构有哪些?如何实现 sorted set?这种数据结构在极端情况下可能有什么问题?二叉平衡树?
    • 系统设计题:一个推送场景,50 条内容,定时推送,先推 5%用户,一段时间后再找出效果最好的几条,推给所有用户。设计相关库表,系统模块, 需要可以落地,有伪代码
    • MySql 索引是什么数据结构?B tree 有什么特点?优点是什么?
    • 慢查询怎么优化?
    • 项目:cache 设计,MQ 丢失消息,RPC 使用场景。各部分职责,有哪些优化点。
    • ThreadLocal 使用场景
    • Redis 回收和备份
    • 项目设计问题——主要是针对项目找漏洞,然后给出优化方案
    • 遇到的坑,怎么解决,后续总结。

    二面

    • 那些问题对你挑战最大?
    • JDK 1.8 ConcurrentHashMap 做过什么改进?HashMap 死锁?
    • 标记的时候怎么找出栈上的 GC Root?说出一种可能的方案,存在什么问题?
    • 字节码有了解过吗?
    • 本地缓存怎么优化空间?(提出 BitMap)BitMap 可行吗?怎么验证可行性?如果不可行,怎么证伪?
    • 其他语言有了解过吗?Scala 的集合有什么特性?python 有什么高级特性?
    • 怎么学习新技术?哪些是基础技术?
    • 在部门中是什么角色定位?
    • JDK 1.8 比前一个版本有哪些改进?
    • ParNew 收集过程,如何调优 ParNew?如何减少 full gc?调大 YoungGen 有什么好处坏处?
    • OpenAPI
    • 平衡二叉树13. 业务逻辑
    • MySQL
    • 服务设计题
    • web 架构设计
    • Pack
    • http 协议
    • 爬虫
    • Java Agent
    • Zookeeper
    • LoadBalance
    • 分布式 ID
    • Nginx
    • Cookie
    • Session
    • GC
    • 手写 LRU 缓存
    • 将现有线性存储结构改成环形结构
    • Redis IO 模型
    • MQ 架构对比
    • 各种缓存 memcache,MongoDB,EhCache,Guava,Caffeine 等等,使用场景
    • 数据库乐观锁悲观锁。在 JDK 和其他中间件的体现。
    • 线程池,核心参数,扩容原理,使用注意点
    • 数据库主从同步,延迟
    • 数据库和缓存一致性问题,出现的场景,解决方案
    • Spring IOC AOP
    • 一致性哈希算法
    • RPC 服务发现与注册
    • 服务提供方不稳定,频繁变动如何提升自身稳定性

    三面+HR面

    • 离职原因
    • 学习习惯
    • 兴趣爱好
    • 为什么选择本公司
    • 本人的优缺点
    • 唠家常

    京东

    面试题如下

    • 海量数据分析。
    • HTTP2.0、thrift。
    • 测试职位问的线程安全和非线程安全。
    • 面试电话沟通可能先让自我介绍。
    • 分布式事务一致性。
    • nio的底层实现。
    • Jvm基础是必问的,jvm GC原理,JVM怎么回收内存。
    • 用过哪些中间件。
    • API接口与SDI接口的区别(API是提供给别人的接口)。
    • dubbo如何一条链接并发多个调用。Dubbo的原理,序列化相关问题。
    • 以前的工作经历,自己觉得出彩的地方
    • 做过工作流引擎没有。
    • 线程池的一些原理,锁的机制升降级
    • Hadoop底层怎么实现
    • 从系统层面考虑,分布式从哪些纬度考虑
    • 虚拟机,IO相关知识点
    • threadLocal,线程池,hashMap/hashTable/coccurentHashMap等
    • 秒杀系统的设计
    • 数据库锁隐原理
    • Linux的命令
    • 一个×××数组,给定一个数,在数组中找出两个数的和等于这个数,并打印出来,我写的时间复杂度高,要求O(n)。
    • n个整数,找出连续的m个数加和是最大。
    • 数据库TPS是多少,是否进行测试过
    • 1000个线程同时运行,怎么防止不卡
    • 并列的并发消费问题
    • 高并发量大的话怎么处理热点,数据等
    • 如何获取一个本地服务器上可用的端口
    • 流量控制相关问题(蚂蚁金服)
    • Java怎么挖取回收器相关原理(财富)
    • Java的集合都有哪些,都有什么特点
    • 缓存击穿有哪些方案解决
    • 分布式锁,redis缓存,spring aop,系统架构图,MySQL的特性
    • 场景,同时给10万个人发工资,怎么样设计并发方案,能确保在1分钟内全部发完 打个比方会提出类似的场景

    HR面试

    • 上一家公司,你为什么会离职?
    • 你怎么看待自己以后的职涯?(包括工作和家庭的分配,怎么平衡家庭和工作的关系、加班、选择一家公司时的考量、location等)
    • 对薪资期望(不要直接说数,绝不能表现出没到多少钱或者什么层级我就不去,这是味道问题不是能力问题)

    候选人被问过的一些题目

    • 项目中遇到的最大挑战是什么?怎么解决的?
    • 你为什么选择本公司?
    • 最有成就感的事情是?
    • 自己觉得自己工作上的短板/优点是什么?
    • 说说自己性格上的优缺点(描述一下自己的性格)
    • 在你朋友眼中,亲人眼中你是一个怎样的人?
    • 怎么看待加班(你能接受996、997、007吗)?如果候选人的调性符合(足够官方),可以这么回答:我觉得我们要实现梦想,一定是要付出比较多努力的,所以我已经做好了准备,也愿意和小伙伴们一起战斗我是可以加班的,我现在加班强度就是比较大的。因为我喜欢这个事情,我想把这个事情做好。
    • 可以接受降薪吗?如果候选人的调性符合(足够官方),可以这么回答:我也理解贵公司现在的薪资架构,我相信公司会根据我的能力给出一个合理的薪水方案,我相信只要把事情做好,该有的一定会有“ 我们在创造历史、我们在做一个从来没有人做过的事情,所以肯定是有难度的,肯定是要付出大量努力的 ”,面试官会特别喜欢这样的话。

    最后

    由于篇幅原因,这些题目解析就不做全部展示了,这些题我已经整理成pdf文档免费分享给那些有需要的朋友,同时整理了一些电子书籍以及架构视频,花费了蛮多时间,相信对正在准备面试以及准备跳槽的朋友都有用;

    需要获取资料的QQ群搜索“909-666-042” 备注“简书” 即可免费领取!

    千道Java面试题、百本电子书籍;Java核心电子笔记;干货架构视频资料

    合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

    java高级开发需要资料直接进我的学习交流群:909666042 即可免费领取。

    最后,用 Martin Fowler 的一句话作为结尾:「任何傻瓜都能写计算机能理解的代码,优秀的程序员编写人类能够理解的代码。」(Any fool can write code that a computer can understand. Good programmers write code that humans can understand)

    相关文章

      网友评论

        本文标题:精心整理七厂Java面试真题;近六百道题,全都掌握大厂还不任你进

        本文链接:https://www.haomeiwen.com/subject/scdyshtx.html