Skip to content

Latest commit

 

History

History
301 lines (232 loc) · 11 KB

README.md

File metadata and controls

301 lines (232 loc) · 11 KB

程序员修炼秘籍(未完)

一名JAVA程序员,将自己的编程学习之路做以总结并进行分享。内容包括但不限于数据结构、算法、数据库、操作系统、计算机网络等多方面。 博文:http://www.i3geek.com/archives/1187 目前先暂列目录,内容在逐渐增加中

JAVA

关键字

void byte int long char short float double String StringBuffer StringBuilder Array Collection Collections List ArrayList LinkedList Vector Set HashMap TreeMap LinkedHashMap ConcerrentHashMap Set TreeMap HashMap synchronized volatile transient implements extends public private protected this super static final const null run start thread enmu quicksort mergesort heapsort bubblesort selectsort insertsort stack queue list heap tree avlTree Btree B+Tree RTree throw throws try catch finally break continue instanceof

java基础

概念

集合类:

http://www.i3geek.com/archives/616
http://www.i3geek.com/archives/1233

继承和接口

  • interface和abstrat class抽象类的意义与区别:http://www.i3geek.com/archives/1230
  • 实现接口,继承类的规则(单继承多实现)
  • 接口继承接口
  • 继承多个抽象类?
  • Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
  • 对String类的继承
  • abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized
  • 构造器Constructor是否可被override?

异常处理

  • Error、Exception和RuntimeException的区别,作用又是什么?列举3个以上的RuntimeException
  • Java中的异常处理机制的简单原理和应用
  • 内存溢出和内存泄露

管道流

  • inputStream和outputStream
  • reader和inputstream
  • Input/OutputStream和Reader/Writer有的区别
  • 理解字符和字节
  • 一层层的流结构学会字符流和字节流的转换

线程

其他

  • 四种引用,强引用、软引用、弱引用和虚引用 :http://www.i3geek.com/archives/1239
  • String与StringBuilder,StringBuffer的区别
  • StringBuffer的实现方式,容量扩充
  • 对于 String str ="1"+"2"; 产生了几个对象
  • equal与==的区别
  • hashCode的作用
  • 为什么重写equals就必须重写hashCode
  • 自动拆装箱:http://www.i3geek.com/archives/990
  • NIO
  • java动态代理
  • 序列化与反序列化
  • public、protected、private以及默认的作用域
  • Object类的学习和理解,基本的方法
  • char类型的大小,对汉字的存储
  • java中传值和传引用的理解,四种引用
  • 正则表达式

Java进阶

多线程

  • 多线程要注意什么?
  • volatile的关键字学习
  • 多线程保证同步的所有方法,除了synchronized外还有什么?
  • java中sleep和wait的区别:http://www.i3geek.com/archives/1173
  • 理解和使用wait/notify
  • 如何保证线程的同步和并发
  • 守护线程的含义
  • 正确的停止一个线程
  • 对synchronized的理解,锁的是什么?锁静态方法和非静态方法的区别

虚拟机

内存结构
GC垃圾回收

http://www.i3geek.com/archives/1220

  • gc的概念,什么需要回收?
  • 怎么判断被回收?有哪些方法
  • 引用计数方法,对象引用遍历和分代回收方法是什么
  • 怎么避免对象循环引用的回收
  • Java中的内存溢出是如何造成的:http://www.i3geek.com/archives/1241
  • Java中的内存溢出和C++中的内存溢出,是一个概念吗?:http://www.i3geek.com/archives/1241
CLASSLOADER
  • 什么是类加载器
  • 哪三层类加载器
  • 什么加载顺序
  • 功能是什么?工作模式是什么?
  • 项目中的例子,加载必要jar包
  • 反射的原理,什么是反射?
  • 反射的运用,反射是否可以调用私有方法

其他

  • NIO是什么
  • PRC远程服务原理及作用:http://www.i3geek.com/archives/941
  • JMS消息服务框架
  • io和nio的本质以及使用场景
  • java 8的新特性
  • hashcode 有哪些算法
  • 泛型的实现机制
  • Socket编程通常出现的异常有哪些,什么情况下会出现
  • 了解JVM启动参数 -verbose -Xms -Xmx的意思

J2EE

基本概念

Servlet

  • servlet的基本概念
  • servlet的生命周期
  • servlet中定制session的过期时间
  • Servlet中的session工作原理 (禁用cookie如何使用session)
  • filter和listener是什么?有什么区别?servlet、filter、listener:http://www.i3geek.com/archives/870
  • JSP和Servlet的区别、共同点(JSP的工作原理)。

Web框架

web安全

  • SQL注入
  • XSS
  • CSRF攻击
  • DDos攻击

算法

排序

  • 各种排序算法时间、空间复杂度和稳定性:http://www.i3geek.com/archives/733
  • 列举所有的排序算法,深入理解分析
  • 实现链表排序的一种算法
  • 字符串(单链表)逆序

其他

数据结构

计算机网络

数据库

  • 范式:http://www.i3geek.com/archives/108
  • 什么是事务?事务的四种特性和应用:事务(transaction)是数据库管理系统的执行单位,可以是一个数据库操作(如Select操作)或者是一组操作序列。事务ACID属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
  • 乐观锁,悲观锁
  • 表关联时,内连接,左连接,右连接怎么理解?
  • 什么是索引以及索引的实现(B+树介绍、和B树、R树区别)(聚集和非聚集):http://www.i3geek.com/archives/132
  • 什么是视图,视图的作用,可以在视图上建立索引吗
  • 数据库的分库分表:http://www.i3geek.com/archives/1108
  • mysql的分库分表架构:http://www.i3geek.com/archives/1111
  • 数据库隔离级别:隔离级别就是对对事务并发控制的等级。ANSI/ ISO SQL将其分为串行化(SERIALIZABLE)、可重复读(REPEATABLE READ)、读已提交(READ COMMITED)、读未提交(READ UNCOMMITED)四个等级

操作系统

  • 分页分段是什么
  • 虚拟内存管理
  • 换页三种算法(LRU……)
  • 进程间通信
  • linux下列出几个比较常见的命令,并解释下命令的用法

设计模式

C/C++

项目

图书

扩展学习

  • 云计算,分布式
  • 高并发
  • 高可用
  • 可扩展
  • 虚拟化
  • 负载均衡
  • git/svn的使用
  • maven的使用

其他

  • 一次宕机的解决过程:http://www.i3geek.com/archives/1191
  • 加密算法,对称加密DES、AES和非对称加密RSA、DSA,不可逆加密MD5、SHA1
  • 高内聚,低耦合方面的理解
  • 设计模式的日常使用,举例说明
  • 如何估算网站的最大并发数
  • 设计一个秒杀系统
  • 远程通信的方式及选择——RPC WebServer HttpRequest RMI JMS:http://www.i3geek.com/archives/1218

算法

主要使用的OJ是牛客网,源码部分在nowcoder中

  • 递归完成前后中序的遍历
  • 深度优先遍历(栈)、广度优先遍历(队列)
  • 红黑树
  • 排序算法:堆排序、归并排序、希尔排序