JAVA基础面试题

Java基础

实例方法和静态方法有什么不一样?
Java中的异常有哪几类?分别怎么使用?
常用的集合类有哪些?比如List如何排序?
ArrayList和LinkedList内部的实现大致是怎样的?他们之间的区别和各自适应的场景是什么?
内存溢出是怎么回事?
ClassLoader有什么用?
==和equals的区别?
hashCode方法的作用?
Object类中有哪些方法?列举3个以上。
NIO是什么?适用于何种场景?
HashMap数据结构、扩展策略,Hash冲突攻击如何防范,如何实现线程安全的HashMap?
JVM内存结构,GC算法,CMS、G1的原理
NIO模型,select/epoll的区别,多路复用的原理
Java中一个字符占多少个字节,扩展再问int, long, double占多少字节
创建一个类的实例都有哪些办法?
final/finally/finalize的区别?
LinkingBlockingQueue与ArrayBlockingQueue的区别,他们的适用场景?
Session/Cookine的区别?
String/StringBuffer/StringBuilder的区别,扩展再问他们的实现?
Servlet的生命周期?
如何用Java分配一段连续的1G的内存空间?需要注意些什么?
Java有自己的内存回收机制,但为什么还存在内存泄露的问题呢?
Java里面用对象作为Key需要注意些什么? 如何实现hashcode?
序列化

JVM

  1. JVM堆的基本结构
  2. JVM的垃圾算法有哪几种?CMS收集算法的流程?
  3. JVM有哪些常用启动参数可以调整?
  4. 如何查看JVM的内存使用情况?
  5. Java程序是否会内存溢出?
  6. 你常用的JVM配置和调优参数都有哪些?分别什么作用?
  7. Java内存分代模型,GC算法,JVM常见的启动参数;
  8. CMS算法的过程,CMS回收过程中JVM是否需要暂停(这块回答较好,也可以只是 看毕玄的Java分布式开发或网上文章的学习, 可以结合JVM启动参数常见配置, jstat等命令,看下动手能力,意愿;以及实际线上问题排查)
  9. 什么情况下会出现OOM(堆内存,永久区,堆外区,方法栈)
  10. Java内存结构(堆结构,新生代[S0/S1/Elden],老年代,持久代)
  11. 常用的GC策略,什么时候会触发YGC,什么时候触发FGC
  12. 类加载的三种方式

数据结构与算法基础

  1. 说一下几种常见的排序算法和分别的复杂度
  2. 什么是跳表?
  3. 如何确认一个链表有环?进一步,确认环的位置
  4. 如何遍历一棵二叉树?
  5. 倒排一个LinkedList。
  6. HashSet的实现方式 多线程/并发
  7. Java中常见的锁,互斥锁,读写锁,信号量
  8. 原子Atomic类,如何保证原子性,CAS硬件指令
  9. volatile,可见性问题的原因,硬件架构,L3 Cache,QPI,乐观锁
  10. 如何实现一个线程安全的数据结构
  11. 如何避免死锁
  12. 如何解决ABA问题
  13. Synchronized关键字的作用?
  14. Volatile关键字的作用?
  15. Java内存模型是怎样的?
  16. HashMap在多线程环境下使用需要注意什么?为什么?
  17. Java程序中启动一个线程是用run()还是start()?
  18. 什么是守护线程?有什么用?
  19. 什么是死锁?如何避免
  20. 线程和进程的差别是什么?
  21. Java里面的Threadlocal是怎样实现的?
  22. ConcurrentHashMap的实现原理是?
  23. sleep和wait区别
  24. notify和notifyAll区别
  25. volatile关键字的作用
  26. ThreadLocal的作用与实现
  27. 两个线程如何串行执行
  28. 上下文切换是什么含义
  29. 可以运行时kill掉一个线程吗?
  30. 什么是条件锁、读写锁、自旋锁、可重入锁?
  31. 什么是协程(用户态线程,减少数据拷贝,降低CPU开销,无callback函数)?
  32. 线程池ThreadPoolExecutor的实现原理?
  33. J.U.C下的常见类的使用。lock, synchronized, ThreadPool的深入考察; BlockingQueue的使用。(take,poll的区别,put,offer的区别);原子类的实现。
  34. 各种常见锁使用如果上面这些掌握很好,还可以看看更深一点的 False Sharing,Cache Line,可见性与原子性等;

Linux使用与问题分析排查

硬链接和软链接的区别?
inode是什么?
Linux常用命令有哪些?
怎么看一个Java线程的资源耗用?
Load过高的可能性有哪些?
/etc/hosts文件什么做用?
/etc/resolv.conf文件什么作用?
如何快速的将一个文本中所有“abc”替换为“xyz”?
你常用的Linux下用来进行网络和磁盘IO分析的工具有哪些?
你常用的Linux下用来进行内存和CPU分析的工具有哪些?
发现磁盘空间不够,如何快速找出占用空间最大的文件?
Java服务端问题排查(OOM,CPU高,Load高,类冲突)
Java常用问题排查工具及用法(top, iostat, vmstat, sar, tcpdump, jvisualvm, jmap, jconsole)
Thread dump文件如何分析(Runnable,锁,代码栈,操作系统线程ID关联)
grep,awk,sed; 是否自己写过shell脚本;
常见的cpu load过高,us过高,一般是什么问题。引申出是否用过top,jstat,jstack 等。
常见的内存问题一般有哪些。 引申出是否用过free,top, jmap等。

框架使用

  1. Spring中Bean的生命周期
  2. SpringMVC或Struts处理请求的流程。
  3. Spring AOP解决了什么问题?怎么实现的?aop与cglib,与asm的关系。
  4. Spring事务的传播属性是怎么回事?它会影响什么?
  5. Spring中BeanFactory和FactoryBean有什么区别?
  6. Spring框架中IOC的原理是什么?
  7. Spring的依赖注入有哪几种方式
  8. Struts工作流程
  9. 用Spring如何实现一个切面?
  10. Spring 如何实现数据库事务?
  11. Hibernate和Ibatis这类ORM框架的区别?什么是ORM,解决的痛点是什么?
  12. Spring ioc的生命周期,(init-method,intilizingbean接口方法afterPropertiesSet的先后顺序)等。
  13. Hibernate对一二级缓存的使用,Lazy-Load的理解;
  14. Spring IoC AOP自己用代码如何实现
  15. RPC的负载均衡、服务发现怎么做的
  16. 几种推送模型的区别,long polling,websocket

数据库相关

MySQL InnoDB的特点?
乐观锁和悲观锁的区别?
数据库隔离级别是什么?有什么作用?
MySQL主备同步的基本原理
如何从一张表中查出name字段包含“XYZ”的所有行?
索引数据结构(字典+BitTree)
如何优化数据库性能(索引、分库分表、批量操作、分页算法、升级硬盘SSD、业务优化、主从部署)
SQL什么情况下不会使用索引(不包含,不等于,函数)
一般在什么字段上建索引(过滤数据最多的字段)
如何从一张表中查出name字段不包含“XYZ”的所有行?
MySQL,B+索引实现,行锁实现,SQL优化
Redis,RDB和AOF,如何做高可用、集群
如何解决高并发减库存问题
mysql存储引擎中索引的实现机制;
数据库事务的几种粒度;
行锁,表锁;乐观锁,悲观锁

网络协议和网络编程

  1. TCP建立连接的过程。
  2. TCP断开连接的过程。
  3. 浏览器发生302跳转背后的逻辑?
  4. HTTP协议的交互流程。HTTP和HTTPS的差异,SSL的交互流程?
  5. Rest和Http什么关系? 大家都说Rest很轻量,你对Rest风格如何理解? 6. TCP的滑动窗口协议有什么用?讲讲原理。
  6. HTTP协议都有哪些方法?
  7. 交换机和路由器的区别?
  8. 什么是VLAN,有什么作用?
  9. 什么是VXLAN,有什么作用?
  10. http协议(报文结构,断点续传,多线程下载,什么是长连接) 12. tcp协议(建连过程,慢启动,滑动窗口,七层模型)
  11. webservice协议(wsdl/soap格式,与rest协议的区别)
  12. spdy/http2.0协议是否有了解
  13. NIO的好处,Netty线程模型,什么是零拷贝
  14. redis等缓存系统/中间件/NoSQL/一致性Hash等
  15. 列举一个常用的Redis客户端的并发模型。
  16. HBase如何实现模糊查询?
  17. 列举一个常用的消息中间件,如果消息要保序如何实现?
  18. 如何实现一个Hashtable?你的设计如何考虑Hash冲突?如何优化?
  19. 分布式缓存,一致性hash
  20. LRU算法,slab分配,如何减少内存碎片
  21. 如何解决缓存单机热点问题
  22. 什么是布隆过滤器,其实现原理是? False positive指的是?
  23. memcache与redis的区别
  24. zookeeper有什么功能,选举算法如何进行
  25. map/reduce过程,如何用map/reduce实现两个数据源的联合统计

设计模式与重构

  1. 你在设计一个工厂的包的时候会遵循哪些原则?
  2. 你能列举一个使用了Visitor/Decorator模式的开源项目/库吗?
  3. 你在编码时最常用的设计模式有哪些?在什么场景下用?
  4. 如何实现一个单例?
  5. 代理模式(动态代理)
  6. 单例模式(懒汉模式,恶汉模式,并发初始化如何解决,volatile与lock的使用)
  7. JDK源码里面都有些什么让你印象深刻的设计模式使用,举例看看?
  8. Reactor模式

开放性问题

一个大文件4G,里面一行行的数字,这时内存只有256M,如果做排序?
如果你部署的应用所在机器硬盘坏了,会发生什么?你的程序要如何处理这种异 常?(分布式系统中故障是一种常态,设计要避免单点故障,能容错,保证系统高可用)
实现一个消息队列系统
如何设计一个高可用的架构
多次Hash来解决URL重复访问问题。
全局唯一ID问题。
秒杀如何设计。
如何进行性能优化。
发现CPU 100%,如何排查?
实现一个分布式打点系统。
taobao.com和tmall.com的互相登录的问题。
如何快速对一个2亿数据的List进行排序?
RocketMQ相关的面试题及答案

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值