字节跳动后端Java面试题——MySQL、Tomcat、设计模式、并发编程

为了能够在面试回答中优雅而不失体面回答面试考点,该文章借鉴了不同平台对知识点的描述

  • 如有侵权请联系我
  • 文章的不足和错误请指正,好的建议也不要吝啬,我都会采纳并更正
  • 您的点赞是我持续更新的动力

一、MySQL部分

  1. 数据库三范式是什么?
  2. 有哪些数据库优化方面的经验?
  3. 请简述常用的索引有哪些种类?
  4. 以及在MySQL数据库中索引的工作机制是什么?
  5. MySQL的基础操作命令:
  6. MySQL的复制原理以及流程。
  7. MySQL支持的复制类型?
  8. MySQL中Myisam与Innodb的区别?
  9. MySQL中Varchar与Char的区别以及Varchar( 50)中的50代表的涵义?
  10. MySQL中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?
  11. 表中有大字段X (例如: text类型),且字段X不会经常更新,以读为为主,将该字段拆成子表好处是什么?
  12. MySQL中InnoDB引擎的行锁是通过加在什么上完成(或称实现)的?
  13. MySQL中控制内存分配的全局参数,有哪些?
  14. 若一张表中只有-一个字段VARCHAR(N)类型,utf8 编码,则N最大值.为多少(精确到数量级即可)?
  15. [SELECT *]和[SELECT全部字段]的2种写法有何优缺点?
  16. HAVNG子句和WHERE的异同点?
  17. MySQL当记录不存在时insert,当记录存在时update,语句怎么写?
  18. MySQL的insert和update的select语句语法

二、Tomcat部分

  1. Tomcat的缺省端口是多少,怎么修改?
  2. Tomcat有哪几种Connector运行模式(优化)?
  3. Tomcat有几种部署方式?
  4. Tomcat容器是如何创建servlet类实例?用到了什么原理?
  5. Tomcat如何优化?
  6. 内存调优
  7. 垃圾回收策略调优
  8. 共享session处理
  9. 添加JMS远程监控
  10. 专业点的分析工具有
  11. 关于Tomcat的session数目
  12. 监视Tomcat的内存使用情况
  13. 打印类的加载情况及对象的回收情况
  14. Tomcat一个请求的完整过程
  15. Tomcat工作模式?

三、设计模式部分

  1. 请列举出在JDK中几个常用的设计模式?
  2. 什么是设计模式?你是否在你的代码里面使用过任何设计模式?
  3. Java 中什么叫单例设计模式?请用Java 写出线程安全的单例模式
  4. 在Java 中,什么叫观察者设计模式(observer design pattern)?
  5. 使用工厂模式最主要的好处是什么?在哪里使用?
  6. 举一个用Java 实现的装饰模式(decorator design pattern)? 它是作用于对象层次还是类层次?
  7. 在Java 中,为什么不允许从静态方法中访问非静态变量?
  8. 设计一个ATM机,请说出你的设计思路?
  9. 在Java中,什么时候用重载,什么时候用重写?
  10. 举例说明什么情况下会更倾向于使用抽象类而不是接口?

四、并发编程部分

1. Synchronized 相关问题

  • Synchronized用过吗,其原理是什么?
  • 你刚才提到获取对象的锁,这个"锁”到底是什么?如何确定对象的锁?
  • 什么是可重入性,为什么说Synchronized是可重入锁?
  • JVM对Java 的原生锁做了哪些优化?
  • 为什么说Synchronized 是非公平锁?
  • 什么是锁消除和锁粗化?
  • 为什么说Synchronized 是一个悲观锁 ?乐观锁的实现原理又是什么?什么是CAS,它有什么特性?
  • 乐观锁一定就是好的吗?

2. 可重入锁ReentrantLock 及其他显式锁相关问题

  • 跟Synchronized 相比,可重入锁ReentrantLock 其实现原理有什么不同?
  • 那么请谈谈AQS框架是怎么回事儿?
  • 请尽可能详尽地对比下Synchronized和ReentrantLock 的异同。
  • ReentrantLock是如何实现可重入性的?
  • 除了ReetrantLock,你还接触过JUC 中的哪些并发工具?
  • 请谈谈ReadWriteLock和StampedLock.
  • 如何让Java 的线程彼此同步?你了解过哪些同步器?请分别介绍下。
  • CyclicBarrier 和CountDownLatch 看起来很相似,请对比下呢?

3. Java线程池相关问题

  • Java中的线程池是如何实现的?
  • 创建线程池的几个核心构造参数?
  • 线程池中的线程是怎么创建的?是一开始就随着线程池的启动创建好的吗?
  • 既然提到可以通过配置不同参数创建出不同的线程池,那么Java中默认实现好的线程池又有哪些呢?请比较它们的异同。
  • 如何在Java 线程池中提交线程?

4. Java内存模型相关问题

  • 什么是Java 的内存模型,Java 中各个线程是怎么彼此看到对方的变量的?
  • 请谈谈volatile 有什么特点,为什么它能保证变量对所有线程的可见性?
  • 既然volatile 能够保证线程间的变量可见性,是不是就意味着基于volatile变量的运算就是并发安全的?
  • 请对比下volatile 对比Synchronized 的异同。
  • 请谈谈ThreadLocal是怎么解决并发安全的?
  • 很多人都说要慎用ThreadLocal, 谈谈你的理解,使用ThreadLocal需要注意些什么?

写在最后

针对Java程序员我总结了一份互联网公司Java程序员必备的面试题,现已整理完毕,并且也附上了答案以供大家参考;次份面试题设计到Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等等Java程序员必备技能。

整理这份学习资料也是为了有需要的朋友在面试前能够系统的复习并且能够找到一个好工作。

完整版面试真题和答案已整理成PDF格式,另外还有BAT等一线互联网大厂面试真题,需要的朋友可以加合作XV——Angel_CoCc 免费领取(记得备注“”,不然不通过哟)

希望我们能够一起努力,共同进步,愿大家都能够拿到心仪公司的offer!

你可能感兴趣的:(字节跳动后端Java面试题——MySQL、Tomcat、设计模式、并发编程)