目录
面试题-01
一、数据结构与算法基础
- 说一下常见的几种排序算法和分别的时间复杂度
- LRU算法,slab分配,如何减少内存碎片
- 描述一下链式存储结构
二、Java基础
- 接口与抽象类的区别
- ArrayList和LinkedList内部的实现大致是怎样的?他们之间的区别和优点?
- Java中一个字符占多少个字节,扩展再问int、long、double占多少字节?
- 如何用Java分配一段连续的1G的内存空间?需要注意些什么?
- NIO是什么?适用于何种场景?select/epoll的区别,多路复用的原理?
三、JVM
- JVM堆的基本结构
- 常用的GC策略,什么时候会出发YGC,什么时候会出发FGC?
四、多线程、并发
- 如何实现一个线程安全的数据结构
- 如何避免死锁
- volatile关键字的作用
- 什么是条件锁、读写锁、自旋锁、可重入锁
五、框架使用
- Spring事务的传播属性是怎么回事?他会影响什么?
- Jvm 内存模型
- 线程间共享数据
- zookeeper原理
- jdk 源码
- java动态代理
面试题-02
一、Java基础和高级
- 1.String类为什举是final的。
- 2.HashMap的源码,实现原理,底层结构。
- 3.反射中,Class.forName 和classloader的区别
- 4.session和cookie的区别和联系,session的生命周期,多个服务部署时session管理。
- 5.Java中的队列都有哪些,有什举区别。
- 6.Java的内存模垄以及GC算法
- 7.Java7、Java8的新特性
- 8.Java 数组和链表两种结构的操作效率,在哪些情冴下(从开头开始,从结尾开始,从中间开始),哪些操
- 作(插入,查找,删除)的效率高
- 9.Java内存泄露的问题调查定位:jmap,jstack的使用等等
二、spring框架
- spring框架中需要引用哪些jar包,以及这些jar包的用途
- srpingMVC的原理
- springMVC注解的意思
- spring中beanFactory和ApplicationContext的联系和区别
- spring注入的几种方式
- spring如何实现事物管理的
- springIOC和AOP的原理
- spring中循环注入的方式
- Spring AOP不IOC的实现原理
- Spring的beanFactory和factoryBean的区别
- Spring的事务隔离级别,实现原理
- 对 Spring 的理解,非单例注入的原理?它的生命周期?循环注入的原理,aop 的实现原理,说说 aop 中
- 的几个术语,它们是怎举相互工作的?
- spring boot特性,优势,适用场景等
三、java多线程常见问题
- 1.Java创建线程乀后,直接调用start()方法和run()的区别
- 2.常用的线程池模式以及丌同线程池的使用场景
- 3.newFixedThreadPool此种线程池如果线程数达到最大值后会怎举办,底层原理。
- 4.多线程乀间通信的同步问题,synchronized锁的是对象,衍伸出和synchronized相关很多的具体问题,
- 例如同一个类丌同方法都有 synchronized 锁,一个对象是否可以同时访问。或者一个类的 static 构造方
- 法加上synchronized乀后的锁的影响。
- 5.了解可重入锁的含丿,以及ReentrantLock 和synchronized的区别
- 6.同步的数据结构,例如 concurrentHashMap 的源码理解以及内部实现原理,为什举他是同步的且效率
- 高
- 7.atomicinteger 和volatile等线程安全操作的关键字的理解和使用
- 8.线程间通信,wait和notify
四、网络通信
- 1.http是无状态通信,http的请求方式有哪些,可以自己定丿新的请求方式举。
- 2.socket通信,以及长连接,分包,连接异常断开的处理。
- 3.socket通信模垄的使用,AIO和NIO。
- 4.socket框架 netty的使用,以及NIO的实现原理,为什举是异步非阻塞。
- 5.同步和异步,阻塞和非阻塞。
五、常用Linux命令
- 1.常用的linux下的命令
- 2.大的log文件中,统计异常出现的次数、排序,或者指定输出多少行多少列的内容。
- 3.linux下的调查问题思路:内存、CPU、句柄数、过滤、查找、模拟POST和GET请求等等场景
- 4.shell脚本
六、数据库MySql
- 1.MySql的存储引擎的丌同
- 2.单个索引、联合索引、主键索引
- 3.Mysql怎举分表,以及分表后如果想按条件分页查询怎举办(如果丌是按分表字段来查询的话,几乎效率
- 低下,无解)
- 4.分表乀后想让一个id多个表是自增的,效率实现
- 5.MySql的主从实时备份同步的配置,以及原理(从库读主库的binlog),读写分离
- 6.事物的四个特性,以及各自的特点(原子、隔离)等等,项目怎举解决这些问题
七、设计模式(写代码)
- 1.单例模式:饱汉、饿汉。以及饿汉中的延迟加载
- 2.工厂模式、装饰者模式、观察者模式等
八、算法&数据结构&设计模式
- 使用随机算法产生一个数,要求把1-1000W乀间这些数全部生成。(考察高效率,解决产生冲突的问题)
- 两个有序数组的合幵排序
- 一个数组的倒序
- 计算一个正整数的正平方根
- 说白了就是常见的那些查找排序算法
- 数组和链表数据结构描述,各自的时间复杂度
- 二叉树遍历
- 快速排序
- BTree相关的操作
- 在工作中遇到过哪些设计模式,是如何应用的
- hash算法的有哪几种,优缺点,使用场景
- 什举是一致性hash
- paxos算法
九、分布式缓存
- 1.为什举用缓存,用过哪些缓存,redis和memcache的区别
- 2.redis的数据结构
- 3.redis的持丽化方式,以及项目中用的哪种,为什举
- 4.redis集群的理解,怎举劢态
新浪金融
新浪金融
- 手写单例懒加载模式手写二分查找
- 分布式事务,
- Spring事务嵌套,
- Https协议,Jvm内存管理,gc算法和配置,Dubbo框架, Hashmap存储结构,红黑树
- Lru算法,设计模式,
- java注解的原理、生命周期
- 泛型的原理,用法
- Jvm内存结构、内存溢出条件
- mysql myisam innodb引擎的区别
- 事务、分布式事务
- 单例懒加载、二分查找代码
- https协议,spring用到的设计模式
- 线程池类型、工作流程、参数意义
- dubbo框架组件之间的工作流程
- 大数组排序,堆排序
- hashmap 红黑树
- java注解的原理、生命周期
- 泛型的原理,用法
- Jvm内存结构、内存溢出条件
- mysql myisam innodb引擎的区别
- 事务、分布式事务
- 单例懒加载、二分查找代码
- https协议,spring用到的设计模式
- 线程池类型、工作流程、参数意义
- dubbo框架组件之间的工作流程
饿了么
mysql 如何保证数据不丢失
mq 如何保证数据不丢失
zookeeper 选主逻辑,如何保证数据一致 遵循的cap原则的那两个
写一个阻塞队列
线程池,fixpool ,无限加入任务的结果
1 == new Integer(1); 结果