手记

技术超神之路

在江湖中要练就绝世武功必须内外兼备,需要精妙的招式和深厚的内功,武功的基础是内功。对于武功低(就像江南七怪)的人,招式更重要,因为他们不能靠内功直接去伤人,只能靠招式,利刃上优势来取胜了,但是练到高手之后,内功就更主要了。你剑法再厉害,一剑刺过来,别人一掌打断你的剑,你还怎么使剑法,你一掌打到一个武功高的人身上,那人没什么事,却把你震伤了,你还怎么打。

为了练内功心法,参考8个你必须知道的面试大纲 ,作个人理解与扩充,目前为v1.0版本,这份大纲图随着个人能力的提升会不断的完善。

简单来说,通过这份大纲有计划去国内大厂看看,也是一份面试准备,接下来的时间,本文所列出的知识点都会以个人理解的方式写技术文章。再此鞭策下自己。

Java核心

1. 面向对象

面向对象编程思想的精是23种设计模式,从入门编程那天开始,到研发寿命结束,面向对象的思想都是一直需要学,需要思考的内容。

个人创建了一个设计模式的专题,感兴趣的可以关注下。目前刚写,后面会完善。

专题地址:https://www.jianshu.com/c/2e11dad59747

2. I/O

Java中IO操作主要是指使用Java进行输入,输出操作. Java所有的IO机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的IO流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。

Java.io是大多数面向数据流的输入/输出类的主要软件包。此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO。

流IO的好处是简单易用,缺点是效率较低。块IO效率很高,但编程比较复杂。Java的IO模型设计非常优秀,它使用Decorator模式,按功能划分Stream,您可以动态装配这些Stream,以便获得您需要的功能。例如,您需要一个具有缓冲的文件输入流,则应当组合使用FileInputStream和BufferedInputStream。

2.1 IO的用途

  • 文件访问

  • 网络访问

  • 内部内存访问

  • 管道通信

  • Buffering

  • Filtering

  • Parsing

  • 读写文本(Readers / Writers)

  • 读写对象

2.2 IO的概览

JAVAIO.jpeg

  • 基于字节的I/O接口:InputStream,OutputStram ,典型:FileInputStream,FileOutputStream

  • 基于字符操作的I/O接口:Writer,Reader 。典型:FileWriter,OutputStreamWriter

  • 基于磁盘的I/O接口: File

  • 基于网络操作的I/O接口:Socket

参考《深入分析Java Web技术内幕》第二章

3. 多线程
  • 掌握Thread类型

  • 掌握多线程的程序运行原理及并发并行

  • 线程安全性,死锁等

4. 异常
  • 掌握异常的工作原理并且掌握异常的处理方式

5. 正则表达式
  • 掌握常见正则表达式。正则表达式记忆部分居多。

6. J2EE
  • 掌握Servlet内置对象、动作及相关特点和工作原理

  • 掌握Spring框架的IOC和AOP实现原理(反射和动态代理)

  • 至少掌握一个MVC框架(Spring MVC)的工作原理,并熟练运用。

  • Spring源码,Tomcat整体架构,Jetty,Mybatis等源码分析

7. Java虚拟机
  • 类的加载机制 :加载、链接(验证、准备、解析)初始化、使用、卸载。类加载器分类及其应用程序类加载器、自定义加载器。

  • jvm内存结构:程序计数器、堆、虚拟机栈、本地方法栈、方法区(Java8已移除)、元空间(Java8新增)的作用及基本原理

  • GC算法: 垃圾回收。对象存活判断

  • GC分析 :命令调优 JVM内存参数设置及调优

参考链接:http://www.importnew.com/23742.html

8.  数据库开发
  • 理解至少两种数据库引擎(Inndb/Mysiam)的差异性

  • 熟悉索引的内部数据结构,熟悉常见的索引方式(Btree,hash),和索引类型(unique,full text,normal)

  • 会使用explain分析SQL语句,会优化SQL语句

  • 熟悉一种NOSQL,知道内部实现原理(内部数据结构,在算法优化,内部机制)

  • 掌握分布式数据库的知识,分表,分库,分区,分布式事务等,可以学习一个数据库中间件(TDDL/COBAR)熟悉高并发、大数据情况下的数据库开发。

9. 数据结构和算法
  • 掌握线性表和树的特点并熟练运用

  • 掌握常用的排序和查找算法:插入排序(希尔排序)、选择排序(堆排序)、交换排序(冒泡排序)顺序查找、二分查找、哈希查找

  • 熟练运用排序和查找思想解决编程问题

扩展领域

Web技术
  • 前后端接口协调

  • 至少熟悉一款JS框架(React,Vue,Angular)

  • web前端的常见知识,网站性能优化

想成为全栈工程师,前端的各种技术也要了然于心。仅仅列出几条简单的。另外我创建了一个Web前端的文集,感兴趣的可以关注下。

文集地址:https://www.jianshu.com/nb/14577827

Linux
  • 熟练运用Linux常见命令

  • 熟悉Linux操作系统基本概念及特点

  • Linux集群,高可用,高性能

Linux也是全栈中不可少的一个环节,各种架构,服务器相关都是涉及到Linux,学会使用Linux一定能加快不少你的开发。平时也会经常写各种Linux的相关知识,感兴趣的话可以关注我的Linux文集。

文集地址:https://www.jianshu.com/nb/20776954

最后

行动是成功的第一步,接下来要顺着这个技术成长之路,让自己技术 "超神".  努力所有的技术知识点填满。

附录

0人推荐
随时随地看视频
慕课网APP