面试题-01

一、数据结构与算法基础

  1. 说一下常见的几种排序算法和分别的时间复杂度
  2. LRU算法,slab分配,如何减少内存碎片
  3. 描述一下链式存储结构

二、Java基础

  1. 接口与抽象类的区别
  2. ArrayList和LinkedList内部的实现大致是怎样的?他们之间的区别和优点?
  3. Java中一个字符占多少个字节,扩展再问int、long、double占多少字节?
  4. 如何用Java分配一段连续的1G的内存空间?需要注意些什么?
  5. NIO是什么?适用于何种场景?select/epoll的区别,多路复用的原理?

三、JVM

  1. JVM堆的基本结构
  2. 常用的GC策略,什么时候会出发YGC,什么时候会出发FGC?

四、多线程、并发

  1. 如何实现一个线程安全的数据结构
  2. 如何避免死锁
  3. volatile关键字的作用
  4. 什么是条件锁、读写锁、自旋锁、可重入锁

五、框架使用

  1. Spring事务的传播属性是怎么回事?他会影响什么?
  2. Jvm 内存模型
  3. 线程间共享数据
  4. zookeeper原理
  5. jdk 源码
  6. 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); 结果