CS-Notes/interview/question.md

190 lines
4.7 KiB
Markdown
Raw Normal View History

2018-08-14 20:45:40 +08:00
<!-- TOC -->
- [java 基础](#java-基础)
- [java 语言基础](#java-语言基础)
- [IO](#io)
- [jvm](#jvm)
- [java 多线程](#java-多线程)
- [操作系统](#操作系统)
- [计算机网络](#计算机网络)
- [运输层](#运输层)
- [算法和数结构](#算法和数结构)
- [HTTP](#http)
2018-08-15 19:58:57 +08:00
- [设计模式](#设计模式)
- [分布式](#分布式)
2018-08-14 20:45:40 +08:00
- [数据库](#数据库)
- [Linux](#linux)
- [安全](#安全)
- [简历里面的项目](#简历里面的项目)
- [Storm](#storm)
- [Zookeeper](#zookeeper)
- [kafka](#kafka)
- [hbase](#hbase)
- [hadoop](#hadoop)
- [开放问题](#开放问题)
- [Others](#others)
- [memcache](#memcache)
<!-- /TOC -->
# java 基础
## java 语言基础
- java Object 类的常见方法
- java Set Map List 接口和底层实现类的原理
- 抽象类和接口的区别注意jdk8 接口的新特性
- HashMap 和 ConcurrentHashMap的区别
- String,StringBuffer和StringBuilder的区别
- wait 和 sleep方法的区别
- 动态代理的两种方式,以及区别
- Java序列化的方式
- 传值和传引用的区别Java是怎么样的有没有传值引用。
- @transactional注解在什么情况下会失效,为什么。
- java 基本类型的自动拆装箱的过程
- 内部类与静态内部类的区别
2018-08-15 19:58:57 +08:00
- foreach与正常for循环效率对比
- java 8 的新特性
- AOP和OOP的区别
- java 枚举
- Java的四种引用强弱软虚用到的场景
- foreach与正常for循环效率对比
- java反射的作用于原理
2018-08-14 20:45:40 +08:00
## IO
- java IO 、NIO 、AIO的区别
- nio框架dubbo的实现原理(了解)
-
# jvm
- happens before 原理
- Synchronized 在jvm内部是如何实现的
- 类加载过程
- jvm 内存模型
- 强引用、软引用和弱引用的区别
- volatile 关键字问题
- jvm 内存结构
- jvm GC机制什么情况下触发GCGC算法有哪些GC过程如何等等
- 逃逸分析技术
- 标记清除和标记整理算法的理解以及优缺点。
- eden survivor区的比例为什么是这个比例eden survivor的工作过程。
- JVM如何判断一个对象是否该被GC可以视为root的都有哪几种类型。
- Java是否可以GC直接内存
- 双亲委派模型的过程以及优势
- 常见JVM调优参数
- dump 文件的分析
# java 多线程
- 线程间如何通信
- Synchronized 和 ReentrantLock的区别
- 死锁的产生条件是什么?如何预防死锁?
- 请设计一个死锁例子
- 阻塞队列的实现
- Excutors 线程池的使用方法
- Callable和Future的了解
- notify和notifyall的区别
- Lock接口有哪些实现类使用场景是什么。
- 线程池的参数有哪些,在线程池创建一个线程的过程
- 悲观锁乐观锁优缺点CAS有什么缺陷该如何解决。
- 可重入锁的用处及实现原理写时复制的过程读写锁分段锁ConcurrentHashMap中的segment
- ABC三个线程如何保证顺序执行。
2018-08-15 19:58:57 +08:00
- 线程状态以及状态之间的切换
- ThreadLocal的了解实现原理
2018-08-14 20:45:40 +08:00
# 操作系统
- 进程通讯的方式
-
# 计算机网络
## 运输层
- TCP三次握手四次挥手
- TCP流量控制拥塞控制
- TCP 洪泛攻击
- OSI 五层网络协议
- TCP和UDP的区别
2018-08-15 19:58:57 +08:00
- 长连接和短连接。 连接池适合长连接还是短连接。
2018-08-14 20:45:40 +08:00
# 算法和数结构
- TreeMap如何插入数据二叉树的左旋右旋双旋
- 平衡二叉树的时间复杂度
- Hash算法和二叉树算法分别什么时候用
- 图的广度优先算法和深度优先算法详见jvm中垃圾回收实现
- B-树和B+树的原理和应用场景
2018-08-15 19:58:57 +08:00
- 十大排序算法的原理和复杂度,最好能够手撕出来。(尤其是快排序和堆排序)
2018-08-14 20:45:40 +08:00
## HTTP
- cookie和session的区别分布式环境怎么保存用户状态
2018-08-23 20:47:09 +08:00
- http 和 https 的区别ssl加密过程
2018-08-14 20:45:40 +08:00
2018-08-15 19:58:57 +08:00
# 设计模式
- 观察者模式 代理模式 单例模式
# 分布式
- 分布式事务
- 分布式锁的设计
- 分布式session
2018-08-14 20:45:40 +08:00
# 数据库
- mysql 的索引分类
2018-08-15 19:58:57 +08:00
- truncate与 delete区别
- B+树索引和哈希索引的区别
- 数据库事务
- 四大基本特性?什么是隔离性?数据库并发有几个隔离级别?
- MySQL默认级别
2018-08-14 20:45:40 +08:00
# Linux
2018-08-23 20:47:09 +08:00
- top命令查看系统的参数
2018-08-14 20:45:40 +08:00
# 安全
- 用过哪些加密算法:对称加密,非对称加密算法;
# 简历里面的项目
## Storm
- storm 的 ACK机制
- storm 的tuple分组机制
## Zookeeper
- ZAB算法的原理
- zookeeper如何实现分布式锁
- zookeeper的选主过程
- zookeeper集群之间如何通讯
- zookeeper的应用场景
## kafka
## hbase
## hadoop
# 开放问题
- 一千万的用户实时排名如何实现
- 五万人并发抢票怎么实现
# Others
## memcache
- 一致性hash算法的实现原理