Skip to content

zjsywcc/Outline

Repository files navigation

JAVA:

基本语法

  1. static
  • 修饰变量 方法
  • 静态块(初始化块 构造函数 区别)
  • 静态内部类(内部类)
  • 静态导包
  1. final(String类分析)
  2. transient(transient小记)
  3. foreach循环原理(foreach循环原理)
  4. volatile底层实现(volatile原理)
  5. equals和hashcode(在Java中正确地使用equals()和hashCode()方法,Java中的equals()和hashcode()之间关系 java提高篇(十三)-----equals()方法总结 如何在JAVA中避免EQUALS方法的隐藏陷阱)
  6. string,stringbuffer和stringbuilder(Java 基础之 String、StringBuilder、StringBuffer、CharSequence 区别,Java:String、StringBuffer和StringBuilder的区别,浅谈 Java 字符串(String, StringBuffer, StringBuilder),JAVA 中的 StringBuilder 和 StringBuffer 适用的场景是什么?, Java中的substring真的会引起内存泄露么?)
  7. 伪泛型(Java 泛型总结(一):基本用法与类型擦除, 【Java】泛型中 extends 和 super 的区别?, 泛型的PECS原则)
  8. 自动装箱(Java中的自动装箱与拆箱,java自动装箱拆箱总结)
  9. Try-with-resources(Java 7中的Try-with-resources)
  10. 序列化 反序列化(serialVersionUID作用, JAVA序列化, 序列化和反序列化, Java序列化)
  11. interface 和 abstract class 区别
  12. 变长参数(Java可变参数 Java 中的变长参数)
  13. 枚举详解(Java enum的用法详解, Java枚举详解, 通过枚举enum实现单例设计, 枚举单例模式如何防止反射攻击, Java 单例模式的两种高效写法)
  14. Null详解(Java中有关Null的9件事)
  15. Java 8 默认方法(Java 8 默认方法(Default Methods))

集合类(底层实现原理,实现类的优缺点)

  1. List
  1. Map(Java中HashMap,LinkedHashMap,TreeMap的区别,HashMap、HashTable、LinkedHashMap和TreeMap用法和区别)
  1. Set
  • HashSet
  1. CopyOnWrite容器(Java中的Copy-On-Write容器)
  2. Queue
  3. collection包结构(Java集合框架概述:Collection(List, Set, Queue)和Map)

设计模式(研究常用的十几钟)

  1. 你的项目中用到了哪些设计模式,如何使用
  2. 知道常用设计模式的优缺点(设计模式Java版, 十种设计模式示例归纳)
  3. 能画出常用设计模式的UML图(常用设计模式介绍及 UML 图讲解)
  4. 说一下你知道的设计模式,XX设计模式写一下代码,如果需要XX,怎么优化
  5. 代理模式 AOP
  6. 单例模式(如何正确地写出单例模式)
  1. ConcurrentHashMap(ConcurrentHashMap源码分析--Java8, ConcurrentHashMap源码分析(JDK8版本), jdk1.8的HashMap和ConcurrentHashMap,Java并发编程总结4——ConcurrentHashMap在jdk1.8中的改进)
  1. 并发编程模式(Java程序性能优化)(多线程设计模式总结, 网络爬虫中的那些多线程设计模式, )
  2. Thread和Runnable的区别和联系(Runnable VS Thread 及其资源共享问题)
  3. 多次start一个线程会怎样(Java 线程简介)
  4. 线程有哪些状态(JAVA线程间的状态转换, Java多线程学习)
  5. 线程池
  1. 多线程同步(40个Java多线程问题总结)
  1. 假如有Thread1、Thread2、Thread3、Thread4四条线程分别统计C、D、E、F四个盘的大小,所有线程都统计完毕交给Thread5线程去做汇总,应当如何实现?(java.util.concurrent下就有现成的类可以使用)(Java的几个同步辅助类, Java并发编程:CountDownLatch、CyclicBarrier和Semaphore)
  2. Java的wait(), notify()和notifyAll()使用小结(Java的wait(), notify()和notifyAll()使用小结, Java进阶(三)多线程开发关键技术)
  3. 多线程和多进程(多进程与多线程的乱七八糟的事情, 多进程单线程模型与单进程多线程模型之争, 为什么要了解进程与线程的区别,了解二者的区别有什么意义呢?)
  4. 进程间通信方式(线程间的通信、同步方式与进程间通信方式)
  5. 自旋锁和互斥锁 自旋锁原理 什么时候不能用自旋(自旋锁和互斥锁)
  6. 死锁的查看和避免(Java如何查看死锁?, JAVA死锁和避免死锁, Java 程序死锁问题原理及解决方案, Java死锁范例以及如何分析死锁)
  7. 守护线程和用户线程的区别(Java线程和多线程(六)——守护线程)

JUC

  1. LinkedBlockingQueue(Java多线程-工具篇-BlockingQueue,BlockingQueue,Java并发阻塞队列(put和take、offer和poll、drainTo)的使用)
  • poll(WebMagic中QueueScheduler放使用add,取使用带有synchronized的poll,TODO:poll没有阻塞的特性,但为什么要加sync)
  • take
  1. AtomicInteger
  2. ReentrantLock和Condition(TODO:java线程等待/通知模型)
  3. ExecutorService
  4. ConcurrentHashMap
  5. ScheduledThreadPoolExecutor(Java线程池源码分析二(ScheduledThreadPoolExecutor), Executor框架延时执行任务及周期性执行任务的方法介绍)
  6. CountDownLatch, CyclicBarrier, Phaser(Java进阶(四)线程间通信剖析)

Socket IO(阻塞/非阻塞 同步/异步的区别)

  1. 四种IO模型(Java I/O模型从BIO到NIO和Reactor模式, Java I/O 模型的演进)
  • 阻塞IO
  • 非阻塞IO
  • 多路复用IO
  • 异步IO (Java AIO-异步通信)
  • Socket IO如何和这四种模型相关联
  1. NIO
  • NIO的原理(NIO使用及原理分析)
  • NIO属于哪种IO模型(NIO并不是严格意义上的非阻塞IO而应该属于多路复用IO)
  • NIO的三大组成(Java NIO系列教程)
  • NIO会阻塞在Selector的select方法上
  • Netty框架
  1. 五中IO模型和原理(Java NIO:浅析I/O模型, 也谈BIO | NIO | AIO (Java版))

JDK源码

  1. String的hashCode()方法是怎么实现的
  2. List、Map、Set实现类的源代码
  3. ReentrantLock、AQS的源代码(AbstractQueuedSynchronizer的介绍和原理分析)
  4. AtomicInteger的实现原理,主要能说清楚CAS机制并且AtomicInteger是如何利用CAS机制实现的
  5. 线程池的实现原理
  6. Object类中的方法以及每个方法的作用
  7. JDK默认消息中间件的api,JMS(kafka:一个分布式消息系统)

DS

  1. Arrays and Strings(leetcode习题分类汇总-Array篇)
  2. Linked Lists
  3. Stacks and Queues

Algorithm

  1. Bit Manipulation
  2. Mathematics and Probability
  3. Recursion and Dynamic Programming
  4. Sorting and Searching
  1. 算法分析
  • Collection.sort方法使用的是哪种排序算法(TimSort 增强型的归并排序)
  1. 经验: 一步一步优化答案, 重要的是过程
  2. string contains(为什么java String.contains 没有使用类似KMP字符串匹配算法进行优化?)
  3. Java实现tail(Java高效实现Tail -f)
  4. Java重写equals(Java中equals()与hashCode()的原理与设计
  5. 冒泡排序(白话经典算法系列之一 冒泡排序的三种实现)
  6. 动态规划(动态规划:从新手到专家)

JVM

  1. Java虚拟机的内存布局(java虚拟机的内存布局及对象加载, Java内存区域与内存溢出异常)
  2. GC算法及几种垃圾收集器(JVM 垃圾回收器工作原理及使用实例介绍, 垃圾收集器与内存分配策略)
  3. 类加载机制,也就是双亲委派模型(深入探讨 Java 类加载器)
  4. Java内存模型(深入理解Java内存模型,Jvm内存模型)
  5. happens-before规则(happens-before俗解, Java内存访问重排序的研究)
  6. volatile关键字使用规则(正确使用 Volatile 变量, Java内存模型与Volatile关键字)
  7. 参数调优(Tomcat中JVM内存溢出及合理配置)
  8. 调优工具
  9. OOM
  10. 四种引用类型(强引用、弱引用、软引用、虚引用)
  11. finalize(Java避免使用finalizer方法)
  12. GC在什么时候,对什么东西,做了什么事情(一个面试官对面试问题的分析)

Servlet

  1. 规范(Java Servlet 3.1 规范)

数据库:

SQL

  1. union和union all的区别(union和union all 的区别)
  2. left join(关于 MySQL LEFT JOIN 你可能需要了解的三点, 从一个MySQL left join优化的例子加深对查询计划的理解)
  3. 性能优化(SQL基础和SQL优化)
  4. 范式和反范式(解释一下关系数据库的第一第二第三范式, 高性能MySQL:范式和反范式)
  5. 慢查询(MySQL索引原理及慢查询优化)

类型

  1. 关系型 MySQL (CA)
  2. 非关系型 Redis MongoDB (CP)
  3. Dynamo (AP)
  4. 行存储和列存储(大数据存取的选择:行存储还是列存储?)

框架

  1. Hibernate
  • 性能分析
  • 一级二级缓存

事务

  1. 四个性质ACID
  2. 【常问】隔离级别(MySQL事务隔离级别)
  3. 原理(浅析Mysql InnoDB存储引擎事务原理, MySQL InnoDB单机事务原理(一))

索引(几种索引及其区别)

  1. 实现方式(MySQL索引背后的数据结构及算法原理)
  2. 索引优化问题(a, b, c列的index怎么建,联合索引)(一个mysql多列索引的问题,MySQL索引原理及慢查询优化,mysql索引和优化)
  3. 查看索引(如何查看数据库或表的索引?)

读写分离

缓存

快照

多表查询单表查询

  1. 读锁
  2. 写锁
  3. 乐观锁 (mysql乐观锁总结和实践)
  4. 原理(Mysql数据库事务的隔离级别和锁的实现原理分析)
  5. MVCC实现原理(InnoDB多版本(MVCC)实现简要分析)
  6. 加锁处理分析(MySQL 加锁处理分析 InnoDB 事务/锁/多版本 实现分析)
  7. 死锁的处理(MySQL中的锁(表锁、行锁) mysql死锁(deadlock)分析及解决)
  8. 锁的类型(Mysql InnoDB锁和死锁)
  9. Innodb中的事务隔离级别和锁的关系(Innodb中的事务隔离级别和锁的关系,InnoDB的锁和事务隔离级别,Innodb 中 RR 隔离级别能否防止幻读?,MySQL的InnoDB的幻读问题)

CAS

Redis

  1. 只有单线程,高效

MySQL

  1. 引擎
  1. 水平切分和垂直切分(分布式) 分表问题([MySQL]MySQL分区与传统的分库分表, mysql 分库分表的方法)
  2. mongo和mysql的对比(MongoDB 与 MySQL 对比, mongodb与mysql相比的优缺点, MySQL与MongoDB的区别)

场景

  1. 两台服务器之间数据库通信问题,如果有网络超时,故障,如何处理(以2个银行之间转账为例),如何保持实时性(原子性和一致性, CAP,BASE)(分布式系统的事务处理,分布式系统事务一致性解决方案,保证分布式系统数据一致性的6种方案)

WEB:

Session

  1. 谈谈分布式Session的几种实现方式(常用的四种)
  2. 讲一下Session和Cookie的区别和联系以及Session的实现原理([]谈谈分布式Session的几种实现方式,Session和Cookie的区别和联系以及Session的实现原理](http://aoyouzi.iteye.com/blog/2310193))
  1. web.xml里面的内容(使用 实现原理)
  • Filter
  • Servlet
  • Listener

HTTP

  1. get/post的区别
  2. forward/重定向的区别
  3. HTTPS的实现原理
  4. 协议
  5. 输入网址enter发生了什么(当···时发生了什么?)
  1. CAP BASE(CAP原则(CAP定理)、BASE理论,如何正确理解CAP理论?,CAP理论十二年回顾:"规则"变了)

框架

  1. Spring(25个经典的Spring面试问答)

容器

  1. Tomcat

OAuth2.0

架构

  1. 负载均衡
  2. 一致性hash(MemCache超详细解读, 一致性Hash算法,Java代码实现的深入研究)
  3. SOA和RPC(面向服务体系,大型分布式架构 Dubbo) (RPC-client异步收发核心细节?)
  4. 消息队列原理 消息队列如何保证可靠(消息队列设计精要)
  5. 大型网站系统与Java中间件实践(大型网站系统与Java中间件实践)
  6. 高并发 10w并发量(秒杀系统架构分析与实战)
  7. 安全
  1. 阿里中间件(阿里中间件团队介绍)
  2. 序列化(Java序列化)
  3. 服务器并发模型 nginx(NGINX的并发模型, nginx并发模型与traffic_server并发模型简单比较, NGINX引入线程池 性能提升9倍, Apache和Nginx比较, apache与nginx对比)
  4. Kafka(kafka数据可靠性深度解读, Kafka文件存储机制那些事)
  5. j2ee数据分层(J2EE(四)- po,vo,bo,pojo,dto,dao区别)

网络服务抖动

场景

  1. 单点登陆(Single sign in)
  2. 秒杀系统

源码:

OKHttp3

Spring-core

Tomcat

Hibernate

MyBatis

  1. MyBatis中$和#的区别(mybatis深入理解(一)之 # 与 $ 区别以及 sql 预编译)

集合类

Concurrent包

Storm:

  1. 基本概念(实时计算系统Storm学习笔记)
  2. 通信(【源码分析】storm拓扑运行全流程源码分析)
  3. 序列化使用kryo(序列化)
  4. thrift(Thrift序列化/反序列化方法对比)
  5. disrupter(【系统架构】聊聊Disruptor)

计算机基础

计算机网络

  1. tcp/ip tcp和udp的区别和联系 tcp消息重发 time wait(Linux下套接字详解(一)----TCP/UDP的区别与联系)
  2. tcp拥塞控制, 怎么判断拥塞(TCP 的那些事儿(下))
  3. 延时 网络抖动
  4. tcp粘包(TCP粘包与拆包——基于Netty)
  5. 长连接(面试时如何优雅的谈论HTTP/1.0/1.1/2.0)
  6. 服务端推送(Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE)
  7. HTTP和TCP 全双工 or 半双工(http协议和websocket协议的区别)

操作系统

  1. x86有哪些寄存器你用过
  2. 死锁, 有没有碰到过死锁, 如何判断死锁, 代码如何规避, 银行家算法
  3. 进程与线程的区别(进程,线程 ->iOS 多线程 runloop)
  4. 管程概念(管程)
  5. linux怎么看内存占用 Cache Buffer区别 (Ubuntu 使用top/free查看内存占用大的原因, Linux下查看内存使用情况方法总结)
  6. 什么时候切到swap分区(虚拟内存) (linux swap交换分区说明/管理)

数据结构

  1. 红黑树 红黑树的插入算法

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published