今日内容
不知不觉,这已经是写的第十篇博客了,其实写博客还是比较花时间的,但是确实也能学到很多不懂的知识。在复习每个知识的时候可能会冒出很多新的名词,让你一脸懵,但是当你解决了这个问题的时候也许你会很有成就感!而且这样也可以加深自己的知识深度~
有人会说你这么写博客不废手嘛?看到别人总结的复制粘贴一下不就好了!其实如果你非常聪明而且很有实力,你确实也可以这样子嘛,但是我觉得很多东西,就算你看了别人的把别人的背下来了,别人问你的时候,你还是说不出来,你信不信?不信算了哈哈哈~
面试内容总结
- 类加载的过程
- 加载:根据查找路径找到相应的class文件然后导入
- 验证:检查加载的class文件信息是否符合当前虚拟机的要求
- 准备:给类中的静态变量分配内存空间
- 解析:虚拟机将常量池中的符号引用替换成直接引用的过程。符号引用就理解为一个标识,而在直接应用直接指向内存中的地址
- 初始化:对静态变量和静态代码块执行初始化工作
- 双亲委派机制
- 加载某个类的class文件时,Java虚拟机采用的就是双亲委派机制,把请求交由父类处理,是一种委派机制
- 工作原理:一个类加载器收到了类加载请求,会先将这个请求交给父类的加载器去执行,如果父类还有父类,那么就会往上一直委托,直到顶层的类加载器。如果父加载器可以完成加载任务,就会成功返回,如果父类加载器无法完成类加载任务,子类加载器才会尝试自己去加载,这就是双亲委派机制!如果子类加载器也无法加载且系统类加载器也无法加载此类事,则会抛出异常!
- 可以避免类的重复加载,并且可以保护程序的安全,防止核心API被随意串改
- 自定义类没用,Java.lang.String,没有用!
- 常用异常有哪些
- 空指针异常:nullPointExceptin
- 类型转换异常:classCastException
- IO异常:IOException
- 索引下标越界异常:IndexOutOfBoundsException
- 指定类不存在异常:classNoFoundException
- 数据格式异常:NumberFormatException
- 内存不足:OutOfMemoryError
- 堆栈溢出:StackOverflowError
- 序列化的了解
- 序列化:把对象转换为字节序列的过程称为对象的序列化。
- 反序列化:将字节序列换成恢复为对象的过程为对象的反序列化。
- 什么情况下使用序列化:
- 想把内存中的对象状态保存到一个文件中或者数据库中的时候。(用的较多)
- 想用套接字在网络上传送对象的时候。
- 通过RMI传输对象的时候
- 如何实现序列化:实现Serializable接口
- lambda表达式的作用和理解
- lambda表达式其实就可以理解是一个匿名函数,是一段可以传递的代码,主要的功能就是为Stream服务!
- lambda表达式的语法:(参数)-> {实现体}
- 类动态代理的实现
- 动态代理也就是动态生成代理类~
- 实现动态代理的方式:JDK动态代理和cglib动态代理。JDK动态代理是基于接口实现的,而cglib是基于继承实现的!
- 应用场景:Spring AOP、hibernate数据查询、测试框架后端mock、rpc、Java注解对象获取!
- IO流的分类和区别
- 按照流的流向分:输入流(InputStream/Reader)、输出流(OutPutStream/Writer)
- 按照操作单元分:字节流(InputStream)、字符流(Reader)
- 按照角色划分为:节点流(FileReader/FileInputStream)、处理流(BufferReader/BufferInputStream)
- 字节流和字符流的区别
- 字节流:按照8个位传输,以字节为单位输入输出数据
- 字符流:按照16个位传输,以字符为单元输入输出数据
- Stream流的了解
- Stream是把要处理的元素集合看做一个流,然后更方便的对流中的元素进行操作~
- 创建Stream流的方式:
- 通过Collection.stream()方法进行创建
- 通过Stream接口中的静态方法来创建
- 作用:可以对元素进行遍历、筛选、聚合、映射、收集、排序、组合等操作
- BIO、NIO、AIO区别
- BIO:同步阻塞IO,也就是通常使用的传统IO,模式简单使用方便,并发处理能力较低
- NIO:同步非阻塞IO,是传统IO的升级,客户端和服务端是通过通道(Channel)通讯的,实现了多路复用!
- AIO:异步非阻塞IO,是NIO的升级,异步IO操作时基于事件和回调机制~
- Files常用的方法
- createFile():创建文件
- read():读取文件
- write():写入文件
- size():查看文件个数
- exists():检查文件路径是否存在
- delete():删除一个文件或目录
阶段性总结
今天还是接着上一篇的基础篇进行扩展写的,其中部分知识点在总结的时候只是进行了简述,如果大家对其中的某一个知识点比较感兴趣,就可以自己去扩展一下,兴趣才是最好的老师!
不忘初心,方得始终!由于本人目前还是在读研期间,明天需要做月度总结,所以最近就可能不会更新的这么频繁啦,但是这不代表这不写了,还是会继续写下去的啦,而且后期可能还会写一些关于机器学习算法和深度学习方面的文章总结,希望大家支持,一起加油啦~
以后的路还很长,但是我们要一步一个脚印向前走,不要想太多,冲就完事了!!!
