前言
在茫茫的互联网海洋中寻寻觅觅,想必你们一定会在面试前会搜寻大量的面试真题吧,刚好我这里有一份500页互联网Java工程师面试题。建议大家收藏起来,在茶余饭后拿出来读一读,以备未雨绸缪之需。希望大家都能找到自己理想的offer呀。
高频面试题
自我介绍一下
项目中用到的技术栈介绍一下
做的自认为比较满意的点讲一讲?
如果这个方案让你重新设计,你怎么做?
equals与==的区别
final, finally, finalize 的区别
重载和重写的区别
两个对象的hashCode()相同,则 equals()是否也一定为 true?
抽象类和接口有什么区别
BIO、NIO、AIO 有什么区别?
Java集合类都有哪些?
ArrayList 和 LinkedList 区别?
HashMap 实现数据结构和扩容过程?
ArrayList 和 LinkedList 区别? 你平常怎么选择?
异常类都有哪些?Exception 和 Error什么区别?
Synchronized 原理,锁膨胀过程 ?
Synchronized 和 reentrantlock 区别?
线程池原理是怎样的?
分布式事务一致性怎么实现?
消息乱序遇到过吗? 怎么解决的?
ThreadLocal 用过吗?实现机制?
wait、sleep区别?
反射用过吗?什么原理?
动态代理了解吗? cglib什么区别
单例模式了解吗? 实现一个线程安全的单例模式?
无界队列和有界队列?
AQS 知道吗?
volatile了解吗?
实现一个生产者消费者例子
Java内存模型清楚吗?
遇到过线上性能问题吗? 怎么排查的?
网络问题遇到过吗?TIME_WAIT和CLOSE_WAIT的区别
三次握手讲一讲
CountDownLatch、Seamphone、CyclicBarrier 都了解吗?
private、protected、public、关键字你平常怎么用的?
Java是值传递还是引用传递,写一段对象拷贝的代码
内存回收机制了解吗?
新生代和老生代区别?
垃圾回收器有哪几种? 你们生产环境用的哪种或哪几种?
Java线程和操作系统线程什么关系?
线程有几种状态,线程生命周期讲讲
MySQL 索引使用什么数据结构?为什么用 B+做索引?
什么是最左匹配原则?
在建表的时候如何设计所以的?有没有做过索引优化 ?
分库分表做了吗? 怎么实现的?
MySQL 主从同步怎么做的?binlog清楚吗?
有没有做分库分表?怎么设计的?
用userId做的分库分表,现在需要用电话号码查询怎么办?
你们用的什么日志框架,log4j 和logback ?和slf4j什么区别?
redis 的String 是怎么实现的? 为什么不直接用c的?
redis 是单线程的吗? 为什么这么快?
redis 中有哪几种数据结构?分别代表什么
类加载机制了解吗?
什么是双亲委派模式
concurrenthashmap 什么原理?
Spring AOP与IOC的实现原理
Spring的BeanFactory和FactoryBean的区别
讲讲Spring中一个Bean的加载流程?
Spring的事务的隔离级别?
Autowired注解的原理?
用的什么rpc框架
幂等了解吗? 你们系统怎么做幂等的
限流、熔断有了解吗?如何实现的
消息中间件如何解决消息丢失、消息乱序问题?
分布式事务保证一致性?
分布式锁的实现?
实现一个分布式自增id?
海量url怎么去重?
Redis有没有做持久化,怎么做的?
工作中用到了那些设计模式?
什么是一致性hash?
项目中用过什么设计模式?清楚模板方法、策略模式、责任链模式吗?
MySQL InnoDB存储的文件结构
讲讲乐观锁和悲观锁
cpu 100% 遇到过吗? 怎么解决的
更新数据机制? 先更新缓存还是DB?
缓存穿透、雪崩有了解吗
设计一个抢红包的程序?
Dp背包问题?
Minor GC 与 Full GC 分别在什么时候发生?
Java 类加载过程?
谈谈对Spring IOC和DI的理解?
你常用的git 命令?
线程调用start 和 run 什么区别? 会有什么效果
中序遍历二叉树
之前项目遇到过什么挑战?
项目中你认为做的最有价值的功能?
父类和子类有同一个属性,实例化子类时是否会包含父类的属性?
有没有出现过Full Gc等问题? 你是怎么排查的?
一般是怎么判断SQL 索引设置是否合理的?
什么是不可变对象?String 类为什么设计成不可变的?
抽象类和接口什么区别?你在做接口和类设计时如何选择?
HashMap的key 类型有什么要求?
写一个深度优先算法?
写快速排序 & 冒泡排序?
什么是用户空间和内核空间?有什么区别?
如何设计存储海量数据的存储系统
分布式session如何管理,你有哪些方案
讲一下如何给高并发系统做限流?
线上系统突然变得异常缓慢,你如何查找问题。
设计一个社交网站中的“私信”功能,要求高并发、可扩展等等。画一下架构图。
后台系统怎么防止请求重复提交
讲讲你理解的服务治理。
执行某操作,前50次成功,第51次失败a全部回滚b前50次提交第51次抛异常,ab场景分别如何设置
一个大的含有50M个URL的记录,一个小的含有500个URL的记录,找出两个记录里相同的URL
海量日志数据,提取出某日访问百度次数最多的那个IP
1000个线程同时运行,怎么防止不卡
设计一个分布式自增id生成服务
总结
对于程序员来说,学历要求已经相当宽松了,所以对于程序员来说,起跑线都是一样的,没有什么拿不下的offer,只有不够硬气的能力。
由于文章篇幅问题,答案就不全部解析,面试题已经整理成文档,有需要答案的可以戳这里免费获取,希望大家都能找到自己理想的offer。