JAVASE
前期视频主要讲解基础教学内容,主要观看对象为0基础的初学者,本文主要记录面试笔试中出现的一些不足之处的知识点,意在查缺补漏,基础内容部分此处不多赘述。若是有个别基础内容面试中出现到了也会在此补充。
Hello World 环境安装 选择循环语句的编写 有基础的就掠过吧
基础
基本数据类型
基础数据类型还是需要掌握的 别基础数据类型答一个String面试就可以结束了
拓展问题经常会问:
- int VS Integer
- String VS StringBuffer VS StringBuilder
整型拓展
int i= 10; //10
int i1 = 0b10; //2 2进制前缀0b
int i2 = 010; //8 8进制前缀0
int i3 = 0x10; //16 16进制前缀0x
switch
查看class文件
流程控制
增强for循环
没有下标的循环遍历不适合用在数组对象的操作,适合用于打印数组
方法与数组
可变参数
个人感觉和直接传递数组差不多 只是少了建立数组的过程 本质上就是数组
内存分析
Array类
int[] a = {1,3,5,2,4,6};
System.out.println(Arrays.toString(a));//[1, 3, 5, 2, 4, 6]
Arrays.sort(a);
System.out.println(Arrays.toString(a));//[1, 2, 3, 4, 5, 6]
Arrays.fill(a,6);
System.out.println(Arrays.toString(a));//[6, 6, 6, 6, 6, 6]
面向对象
继承相关
多态相关
程序加载顺序
异常
Error VS Exception
Error:错误
Exception:异常
基础教学的0基础部分就到这块结束了 GUI编程部分由于本人之前用JAVA SWING GUI写过一些课程项目 且该知识点在现在的面试笔试中出现概率较少
GUI过时了已经第二部分的GUI视频暂且跳过 下面开始进入多线程部分
多线程
这一部分的重点在线程实现和线程同步
线程简介
run VS start
详细的进程线程差别此处掠过,详见操作系统部分笔记
注意中描述的是并行和并发的情况
并行:同一时间点上,多个任务同时处理(需要多CPU/多核)
并发:同一时间段内,多个任务同时处理(单CPU/单核亦可)
线程实现
通过继承来实现(JAVA只有单继承)
通过接口来实现
Callable的好处
1.可以定义返回值
2.可以抛出异常
Lambda表达式
简化代码
因为接口里只有一个方法,所以不用管方法名
还可以更加简化
Ilove love = (int a)-> {
System.out.println("i love you->" + a);
};
//简化1.去掉参数类型
love = (a)-> {
System.out.println("i love you->" + a);
};
//简化2.简化括号
love = a -> {
System.out.println("i love you->" + a);
};
//简化3.去掉花括号
love = a -> System.out.println("i love you->" + a);
love.love(520);
//lambda表达式只有在一行代码的情况下才能简化为一行
//多行则需要用代码块进行包裹
//前提是接口为函数式接口:只有一个方法的接口
//多个参数时 要去掉类型就一起去掉 但是要加括号
Ihate hate = (int a,int b)->{
System.out.println("i hate you->" + a + b);
};
hate = (a,b)->{
System.out.println("i hate you->" + a + b);
};
hate = (a,b)-> System.out.println("i hate you->" + a + b);
hate.hate(250,233);
//接口
interface Ilove{
void love(int a);
}
interface Ihate{
void hate(int a,int b);
}
静态代理
//静态代理模式
//开闭原则:在不修改源代码的基础上做功能增强
//代理是对方法的增强,装饰器是对对象的增强
//真实对象和代理对象都要实现同一个接口
//代理对象要代理真实角色
//好处:
// 代理对象可以做很多真实对象做不了的事情
// 真实对象可以专注做自己的事情
new Thread(()-> System.out.println("我爱你")).start();//Thread本质是对Runnable的静态代理
//Runnable接口和Thread代理都有run方法,最后调用的是Thread的start方法,但实际执行的还是Runnable中的run方法中的方法体
new WeddingCompany(new You()).Marry();
线程状态
233 这个sleep反优化太真实了
这里有个sleep对比wait
- sleep不会释放锁
- wait会释放锁
线程不能启动两次及以上
优先级低只是意味着获得调度的概率低.并不是优先级低就不会被调用了.这都是看CPU的调度
同前面的yield礼让一样 都是概率问题
线程同步
多个线程操作同一个资源
ReentrantLock 可重入锁
线程通信