最近公司来了个新同事,学历并不高,而且大学也不是计算机专业的,今年刚满30岁。
本以为也是来干点基础的活混混日子的,结果没想到这个人上来就把现有项目的性能优化了一遍,直接给公司节省了不少成本,这种“王炸”打法,直接给所有人整懵了。
img
一问才知道这位老哥也是一路被虐过来的。去年年底被裁,本以为自己技术还行,看了一段时间面经,复习了基础知识,就开始投大厂简历。阿里最先给他面试机会,结果没能扛过三面,然后是各种大大小小的公司,在实际面试中被碾压得翻不了身。整整一个半月,一个offer都没拿到。
面试时觉得自己吃透两套架构,够面试用了,没想到各大厂的面试官直接甩了一堆JVM、Mysql优化、并发底层相关的面试题:
大多数人碰到这些性能问题总是一脸蒙圈,很多同学试着网上翻博客或看书,但是发现几乎很难找到合适的解决方案。
当然有的同学做的系统规模不大,并没有碰到过类似问题,但是在跳槽面试时又被问到类似实战型的问题,只能双手一摊了。
其实Java性能调优不是一门编程语言,无法通过直线式的思维来掌握和应用。不是学不会,而是你没有摸透底层原理,缺乏实战与经验!
一:Java开发介绍
-
DOS常用命令
-
JVM、JRE、JDK之间的关系
-
Java开发环境的搭建:安装JDK,配置环境变量
-
Java入门程序(Java的开发流程)
-
Java的注释,标识符、标识符的命名规范
-
Java基本数据类型
-
变量和常量的定义及初始化
-
Java的运算符
-
运算符的优先级
-
Java分支语句之if...else
-
循环的嵌套
-
方法的定义
-
方法的形参和实参
-
方法的递归调用
image-20220114150700200
二、Java数组
-
Java 数组的定义
-
Java 数组的声明
-
数组的优势与局限
-
数组的遍历访问(普通循环,增强for循环)
-
数组元素的顺序查找
-
数组元素的冒泡法排序
-
Arrays工具类的使用
-
二维数组
image-20220114151749983
三、Java面向对象
-
面向对象设计思想
-
面向对象的分析与设计
-
Java与面向对象
-
类中成员变量的定义与意义
-
构造方法的定义和调用
-
面向对象的封装特性
-
局部变量和成员变量的作用域问题
-
静态属性、静态方法、静态代码块
-
面向对象的继承特性
-
继承中构造方法的细节
-
面向对象的多态特性
-
抽象方法与抽象类
-
接口
image-20220114151135824
四、异常
-
异常的概念
-
异常的分类
-
异常的理解
-
常见异常介绍
-
运行时异常
-
编译时异常
-
运行和编译异常区别
-
异常的处理方式之捕获异常
-
异常的处理方式之抛出异常
-
异常的处理方式之断点调试
-
断点调试之引导运行步骤
-
自定义异常
-
异常关键字处理
-
关键字执行流程
-
异常总结
image-20220114151211151
五、集合
-
集合的概念和作用
-
集合和数组的区别
-
集合框架体系介绍
-
集合框架之Collection接口
-
ArrayList和LinkedList的方法使用
-
ArrayList和LinkedList各自的工作原理分析原理分析
-
使用多种方式遍历集合
-
HashSet和LinkedHashSet各自的工作原理分析
-
集合框架之Map接口
-
泛型的使用
-
Collections工具类的使用
image-20220114151313399
六、IO流
-
File类的作用
-
File类中常用方法的使用介绍
-
使用File类操作文件和文件夹
-
相对路径和绝对路径的介绍
-
IO流的概念和工作原理
-
IO流的分类
-
文件流的使用
-
转换流的使用
-
缓冲流的使用
-
对象流的使用
-
内存流的使用
-
使用不同的流实现文件内容的拷贝
image-20220114151336759
七、多线程
-
进程和线程的介绍
-
进程和线程之间的区别与联系
-
线程实现方式之继承自Thread类
-
线程实现方式之实现Runnable接口
-
线程实现方式之线程池
-
线程的生命周期
-
线程中常用方法的使用
image-20220114151649366
我把一些常用Java工具包的思维导图做了汇总,持续更新中,方便读者查阅。
img