2020年6月最新一线互联网大厂Java工程师面试真题分享

Java基础

  1. Static方法是否能被覆盖?
  2. 集合不用泛 型会造成什么问题?比如List list = new ArrayList();
  3. Java泛型中extends和super的用法?
  4. I0字节流和字符流区别?

系列化

  • Serializable和Externalizable区别?
  • serialVersionUID不定义有什么问题?
  1. NIO?
  2. sleep()和wait()方法区别?
  3. 为什么等待和通知是Object类而不是Thread中声明的?
  4. 为什么Java中wait 方法需要在synchronized 的方法中调用? ( wait 和notify 方法之间的任何潜在竞争条件)
  5. 为什么Java中不支持多重继承? (钻石问题)
  6. 为什么Java不支持运算符重载? (清晰、避免混乱、JVM复杂性)
  7. 为什么String 在Java 中是不可变的? (对象池、Map键、安全性)
  8. 为什么char 数组比Java 中的String 更适合存储密码? ( String不变)
  9. 如何使用双重检查锁定在Java中创建线程安全的单例?
  10. synchronized和volatile ?
  11. 同步方法和同步代码块区别?
  12. Lock和synchronzied区别?
  13. Java中偏向锁,自旋锁,轻量级锁,和重量级锁?
  14. 无锁化编程的途径有哪些?
  15. Java线程池corePoolSize, maximuPoolSize, workQueue的含义? .
  16. 如何结合业务场景和机器设置合适的线程池大小?
  17. 同步器: Semaphore , CyclicBarrier , CountDownL atch , Exchanger ?
  18. Java显示锁和隐式锁区别?
  19. 什么是线程上下文切换? (存储和恢复CPU状态的过程,它使得线程执行能够从中断点恹复执行)
  20. 多线程最佳实践?
  • 给线程取有意义的名字
  • 避免锁定和缩小同步范围
  • 多 用同步类少用wait和notify
  • 多用并发集合少用同步集合

强引用,软引用,弱引用?

  • 强引用:主动放,才回收
  • 软引用:内存缺,可回收, Get可能为null
  • 弱引用: GC被回收, Get可能为null
  1. HashMap实现原理?在非线程安全的情况使用HashMap会造成什么问题?
  2. ConcurrentHashMap原理?
  3. ThreadLocal ?
  4. 遇到过什么0OM或SOF ( StackOverflow ) ?
  5. ClassL oader继承关系和过程?
  6. JVM模型?
  7. final的变量不变的是引用还是对象?
  8. Java实现多态的机制?
  9. 两个对象equasl为true ,却拥有不同的hash code ?
  10. 深克隆和浅克隆区别?
  11. 数据库乐观锁和悲观锁?
  12. VSSL?
  13. Java程序性能优化?
  14. jstack,jstat,jmap用法?怎么使用jstack侦测机器CPU飙升的问题?
  15. 开发会遵循那些编码规范?

二,框架

  1. Spring Aop ?
  2. 如何在 系统启动后执行一个bean的方法?
  3. 如何定 制Spring中bean初始化的过程?
  4. 如何自定义Spring标签?
  5. 自定义的实例化、初始化、依赖装配、依赖检查等流程?
  6. Netty原理?和高性能原理?
  • 逻辑架构?
  • 雾拷贝
  • 高效的并发编程?
  1. 消息队列的使用场景?
  2. Redis数据结构,持久化,集群和事务?
  3. Redis单线程为什么并发能力那么强?
  4. ZooKeeper使用场景?选举算法?

设计模式和原则

  1. 单一职责,里氏替换,依赖倒置,接口隔离,迪米特,开闭原则?
  2. 设计模式:模板模式,适配器,策略模式等?
  3. 继承和组合区别?

分布式

一致性哈希? Dubbo?框架如何扩展(微核+插件),API和SPI区别? BASE和CAP ? 分布式事务? 负载均衡技术? 如何构建--个高并发,高性能,高扩展性的系统? 如何应对类似秒杀抢红包瞬间高并发的场景?

数据库

  1. MySQL中myisam和innodb区别?
  2. MySQL的数据如何恢复到任意时间点? (全量和增量binlog ,先恢复在回放)
  3. MySQL数据库设计和使用准则?
  • 尽量不在 DB做运算,复杂运算移到程序中
  • 主键设计( INT主键自增,和B+树叶子节点顺序-致,效率最高)
  • 注释,禁止存储过程,视图,触发器等
  • 禁止存储大文件
  • 定义为NOT NULL并提供默认值
  • WHERE条件的属性上使用函数或者表达式
  • 禁止负向查询,以及%开头的模糊查询
  • 不要使用 IS NULL , IS NOT NULL
  • UNION ALL优于UNION
  • 考虑使用limitN ,少用limit M,N
  1. MySQL explain和profile 用法?
  2. MySQL复制原理和流程? ( dump , I0 , SQL线程)
  3. MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义?
  4. MySQL索引? B+树
  5. MySQL锁?
  • gap锁, next-key锁,以及innodb的行锁是怎么实现的,以及myisam的锁是怎么实现
  • Innodb的锁的策略为next-key锁,即ecord lock+gap lock。是通过在index.上加lock实现的,index 为uniqueindex ,降级为record lock,如普通index ,则为next-key lock ,如没有index , 则直接锁住全表。myisam 直接
  1. 使用全表扫描
  2. 如何应对数据库的瓶颈?
  3. 如何水平,垂直拆分?
  4. 数据库优化? ( 设计和查询优化)
  5. 分布式中间件?

代码题目

  1. 给你一个日期,得出日期在当年的第几天?
  2. 给定- -个数,判断是不是回文数?
  3. 用Java实现快速排序?
  4. 用 Java实现线程安全的任务生产者和消费者模式队列?
  5. 画出模板方法,策略模式,装饰者模式类图?
  6. 下面输出什么?
inta= 1;
Integer b = new Integer(1);
System.out.printin(a == b);

V执行SubClass中main方法,输出什么?(父类静态代码块~>子类静态代码块~>父类普通代码块>父类构造方法~>子类代码块~>子类构造方法)

public class Parent {
public Parent() {
System.outprintn("Parent A");
}
{
System.out.printn("Parent B");
}
static {
System.out.printIn("Parent C");
}
}
public class SubClass extends Parent {
public SubClass() {
System.out.printin("SubClass A");
}
System.out.println("SubClass B");
}
static {
System.out.println("SubClass C");
}
public static void main(StringD args) {
new SubClass();
}

最终userList包含哪些元素?

List userList = Lists.newArrayL it("tom", "iack", "illy); .
for (String user : userList) {
If (user.startsWith("4')) {
userList.remove(user);
   }
}
  1. String usermame = new String("tom");产生几个对象?
  2. 用Java写一个死锁代码?如何避免死锁

开放性题目

  1. 我们行业未来3到5 年会有什么挑战和机遇?
  2. 你的学习能力如何?最近在学习什么新东西?如何学习?看过什么书?
  3. 做过最有成就感的事情是什么?遇到最大的挫折和问题是什么?你是怎么应对和解决挫折和问题的?
  4. 最近看过的书有哪些?得到哪些启发呢?
  5. 如何判断一个数是否存在40亿个整数中?
  6. 一共有25匹马,有一个赛场,赛场有5个赛道,最多同时可以有5匹马-起比赛。假设每匹马速度是稳定的,
  7. 通过马与马之间的比赛,问最少比多少场才能知道跑得最快的5匹马?
  8. 你有不限量的水,还有两个罐子,容量分别是5升和3升。请精确的称量出4升水。
  • 先把5升的罐子装满,然后用罐子里的水来倒满3升的罐子,此时5升罐子中还剩5-3=2升水;倒掉3升罐子里的水,然后把5升罐子里剩下的2升水倒入3升罐子,再次把5升罐子装满水, 并用它往3升罐子倒水,由于把3升罐子装满还需要1升水,因此5升罐子里的水量最终变成了5-1=4升水

关于面试面试我还通过一些渠道发现了需要大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。

需要的小伙伴,点赞、关注、转发之后,私信【面试】免费获取

2020年6月最新一线互联网大厂Java工程师面试真题分享_第1张图片

 

2020年6月最新一线互联网大厂Java工程师面试真题分享_第2张图片

 

2020年6月最新一线互联网大厂Java工程师面试真题分享_第3张图片

你可能感兴趣的:(2020年6月最新一线互联网大厂Java工程师面试真题分享)