大家都知道程序员都有一个梦想,那就是进一线互联网公司深造,不要跟我说你不想进去,如果给你一个这样的平台,不管是薪资待遇还是接触的高度来说,对我们程序员来说都是一个机会,我以前有一个同事,就是从阿里出来的,原来是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)
网友评论