学了那么久的java,一直不得要义,关键是没有真正的参与到有价值的商业项目中,都是学校里的“小打小闹”。经过几次面试,约略明白了一些比较重要的方面,以下是最近学习的流程以及在看的书,感觉这次的学习是一脉相承的,说得不对的地方大家多多包涵,欢迎补充~
一、String
1、String,StringBuffer,StringBuilder三者适用场合(不可变,线程安全,非线程安全)
2、字符串处理:拼接,子串
3、正则表达式
二、IO(阻塞)
1、字节流 InputStream/OutputStream
2、字符流 Reader/Writer
3、随机访问文件 RandomAccessFile
三、NIO(非阻塞)
1、Buffer
2、Channel
3、Selector
四、Thread
1、单线程及线程常用的三种实现方式
2、多线程(同步、异步)
3、线程池
4、锁、死锁等问题(synchronized,lock,volatile关键字,wait/notify,sleep,yield等方法)
五、Concurrent并发工具类
BlockingQueue接口及其实现的子类
六、Collection集合框架
1、List(ArrayList和LinkedList适用场景,线程安全性,LinkedList还可用来代替Stack,代替Queue)
2、Set(无序,不重复,HashSet和TreeSet)
3、Map(键值对,HashMap和TreeMap,注HashMap和Hashtable(过时了)的线程安全性,ConcurrentHashMap线程安全)
4、Queue(PriorityQueue)
5、Collection
6、Collections
还有JSP方面和Android开发一点都不熟悉啊,抓紧时间融合上面的点搞个项目出来先。。。
七、动态反射
八、设计模式
九、数据库相关:
自己没有用过的:
1、索引到底有什么用?怎么用?
主键索引,唯一索引,
2、视图,有什么用?怎么用?定义、查询、更新视图
3、触发器怎么用?定义、激活、删除
4、第1,2,3,4范式,数据库设计的时候要注意
**5、数据库的并发控制
封锁、活锁和死锁、并发调度、封锁的粒度、怎么保证数据库在高并发的情况下不宕机
6、xml数据库
7、数据库的安全性:包括数据的安全和数据库本身的安全
还有很多很多我不知道自己不知道的地方,不知有哪位可以提点一下,马上找工作了,略紧张啊
十、数据结构和算法方面
1、数组:实现,增删查改
2、链表:单链表、双链表、循环链表实现,增删查改
3、栈:数组实现和链表实现,栈与递归的实现,应用(中缀转后缀,逆波兰表达式,迷宫求解)
4、队列:链队列(链表)、循环队列(数组)
5、串:模式匹配算法,KMP算法啊呀。。。
6、二叉树的几条常用性质
7、二叉树的实现、遍历(前中后层次)
8、线索二叉树
9、二叉排序(查找)树与二分查找
10、最优二叉树(哈夫曼树)的实现及压缩解压算法(还有很多个其他压缩算法哦)
11、回溯法与树的遍历
12、图的几个概念(连通图……)、性质
13、图的存储:邻接表,邻接矩阵
14、图的遍历:深度优先(DFS)和广度优先(BFS)
15、最小生成树(最小支撑树):Prim算法和Krusual算法
16、单源最短路径算法:Dijkstra算法
17、关键路径和拓扑排序,了解下?
19、8种排序编程手写都要十分熟练:
直接插入、二分插入
冒泡
选择
希尔
快速
归并
堆
基数
每种排序的时间、空间复杂度,稳定性,最佳、平均、最坏情况
每种排序适用的情况,可以结合使用
20、外部排序:这个搞不懂啊???归并
21、平衡二叉树(AVL树左旋右旋),B_树和B+树,234树。。有难度,嗯!
22、更难的来了:哈希,处理冲突的方法,什么时候用呢???
23、文件和动态存储管理有点布吉岛在讲神马啊
最神秘的算法来了,不会挖:
1、递归与分治:这个好理解,不断将问题分为子问题直到不能再分(如二分搜索,合并排序,快排)
2、动态规划:不太好理解,整体最优——>局部最优(如最长公共子序列,最大子段和,0-1背包问题,最优二叉树)
3、贪心算法:如哈夫曼编码,最小生成书,单源最短路径
4、回溯法:如N皇后问题,0-1背包问题
5、分支限界法:如0-1背包问题,单源最短路径问题
…………………………最头疼的莫过于算法啦,智商余额不足没法完全理解,要是都能理解和写出代码就无敌了,这是我的目标。其他的那什么NP问题,NP完全问题更不知道干啥的了。
附几本还不错的书,有些是看过的,有些是听别人说的:
1、java编程思想
2、java并发编程实战
3、深入理解java虚拟机
4、java核心技术卷一卷二
5、effective java
6、j2ee核心技术
7、java多线程设计模式详解
8、还有专门关于Thread,NIO,Concurrent,IO,Collection的,全英文啊,六级考过表示没有用。有需要电子档的可以留个言
还有几个网站可以多去看看
github,开源中国,并发编程网……欢迎补充