互联网后端知识点整理

前言

一些问题的整理,平时实际工作中可能会忽视的一些原理性问题,后续会选取一些有意思的点进行详述。

JAVA多线程、并发相关

  1. 多个线程同时读写,读线程的数量远远⼤于写线程,你认为应该如何解决 并发的问题?你会选择加什么样的锁?
  2. JAVA的AQS是否了解,它是⼲嘛的?
  3. 除了synchronized关键字之外,你是怎么来保障线程安全的?
  4. 什么时候需要加volatile关键字?它能保证线程安全吗?
  5. 线程池内的线程如果全部忙,提交⼀个新的任务,会发⽣什么?队列全部 塞满了之后,还是忙,再提交会发⽣什么?
  6. Tomcat本身的参数你⼀般会怎么调整?
  7. synchronized关键字锁住的是什么东⻄?在字节码中是怎么表示的?在内 存中的对象上表现为什么?
  8. wait/notify/notifyAll⽅法需不需要被包含在synchronized块中?这是为什 么?
  9. ExecutorService你⼀般是怎么⽤的?是每个service放⼀个还是⼀个项⽬ ⾥⾯放⼀个?有什么好处?

Spring

  1. 你有没有⽤过Spring的AOP? 是⽤来⼲嘛的? ⼤概会怎么使⽤?
  2. 如果⼀个接⼝有2个不同的实现, 那么怎么来Autowire⼀个指定的实现?
  3. Spring的声明式事务 @Transaction注解⼀般写在什么位置? 抛出了异常 会⾃动回滚吗?有没有办法控制不触发回滚?
  4. 如果想在某个Bean⽣成并装配完毕后执⾏⾃⼰的逻辑,可以什么⽅式实 现?
  5. SpringBoot没有放到web容器⾥为什么能跑HTTP服务?
  6. SpringBoot中如果你想使⽤⾃定义的配置⽂件⽽不仅仅是 application.properties,应该怎么弄?
  7. SpringMVC中RequestMapping可以指定GET, POST⽅法么?怎么指定?
  8. SpringMVC如果希望把输出的Object(例如XXResult或者XXResponse)这 种包装为JSON输出, 应该怎么处理?
  9. 怎样拦截SpringMVC的异常,然后做⾃定义的处理,⽐如打⽇志或者包装 成JSON
  10. spring框架中需要引用哪些jar包,以及这些jar包的用途
  11. springMVC的原理
  12. springMVC注解的意思
  13. spring中beanFactory和ApplicationContext的联系和区别
  14. spring注入的几种方式
  15. spring如何实现事物管理的
  16. springIOC和AOP的原理
  17. hibernate中的1级和2级缓存的使用方式以及区别原理
  18. spring中循环注入的方式

MySQL

  1. 如果有很多数据插⼊MYSQL 你会选择什么⽅式?
  2. 如果查询很慢,你会想到的第⼀个⽅式是什么?索引是⼲嘛的?
  3. 如果建了⼀个单列索引,查询的时候查出2列,会⽤到这个单列索引吗?
  4. 如果建了⼀个包含多个列的索引,查询的时候只⽤了第⼀列,能不能⽤上 这个索引?查三列呢?
  5. 接上题,如果where条件后⾯带有⼀个 i + 5 < 100 会使⽤到这个索引吗?
  6. 怎么看是否⽤到了某个索引?
  7. like %aaa%会使⽤索引吗? like aaa%呢?
  8. drop、truncate、delete的区别?
  9. 平时你们是怎么监控数据库的? 慢SQL是怎么排查的?
  10. 你们数据库是否⽀持emoji表情,如果不⽀持,如何操作?
  11. 你们的数据库单表数据量是多少?⼀般多⼤的时候开始出现查询性能急 剧下降?
  12. 查询死掉了,想要找出执⾏的查询进程⽤什么命令?找出来之后⼀般你 会⼲嘛?
  13. 读写分离是怎么做的?你认为中间件会怎么来操作?这样操作跟事务有 什么关系?
  14. 分库分表有没有做过?线上的迁移过程是怎么样的?如何确定数据是正 确的?
  15. MySQL常用命令
  16. 数据库中事物的特征?
  17. JDBC的使用?
  18. InnodB与MyISAM的区别
  19. MySQL为什么使用B+树作为索引?

JVM

  1. 你知道哪些或者你们线上使⽤什么GC策略? 它有什么优势,适⽤于什么 场景?
  2. JAVA类加载器包括⼏种?它们之间的⽗⼦关系是怎么样的?双亲委派机 制是什么意思?有什么好处?
  3. 如何⾃定义⼀个类加载器?你使⽤过哪些或者你在什么场景下需要⼀个⾃ 定义的类加载器吗?
  4. 堆内存设置的参数是什么?
  5. Perm Space中保存什么数据? 会引起OutOfMemory吗?
  6. 做gc时,⼀个对象在内存各个Space中被移动的顺序是什么?
  7. 你有没有遇到过OutOfMemory问题?你是怎么来处理这个问题的?处理 过程中有哪些收获?
  8. 1.8之后Perm Space有哪些变动? MetaSpace⼤⼩默认是⽆限的么? 还是 你们会通过什么⽅式来指定⼤⼩?
  9. Jstack是⼲什么的? Jstat呢? 如果线上程序周期性地出现卡顿,你怀疑可 能是gc导致的,你会怎么来排查这个问题?线程⽇志⼀般你会看其中的什么 部分?
  10. StackOverFlow异常有没有遇到过?⼀般你猜测会在什么情况下被触 发?如何指定⼀个线程的堆栈⼤⼩?⼀般你们写多少?

Netty

  1. BIO、NIO和AIO的区别?
  2. NIO的组成?
  3. Netty的特点?
  4. Netty的线程模型?
  5. TCP 粘包/拆包的原因及解决方法?
  6. 了解哪几种序列化协议?
  7. 如何选择序列化协议?
  8. Netty的零拷贝实现?
  9. Netty的高性能表现在哪些方面?
  10. NIOEventLoopGroup源码?

Redis

  1. Redis与Memorycache的区别?
  2. Redis的五种数据结构?
  3. 渐进式rehash过程?
  4. rehash源码?
  5. 持久化机制
  6. reaof源码?
  7. 事务与事件
  8. 主从复制
  9. 启动过程
  10. 集群
  11. Redis的6种数据淘汰策略
  12. redis的并发竞争问题?

Hadoop

  1. HDFS的特点?
  2. 客户端从HDFS中读写数据过程?
  3. HDFS的文件目录结构?
  4. NameNode的内存结构?
  5. NameNode的重启优化?
  6. Git的使用?
  7. Maven的使用

注: 转载整理自文章
金三银四跳槽季,上周刚面试回来后的面试总结,想进BAT必看

    原文作者:skyarthur
    原文地址: https://segmentfault.com/a/1190000014200350
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞