大数据——Java 知识点整理_java大数据需要掌握哪些框架的哪些内容(1)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

JDK1.7之前:

  • HashMap的底层结构为数组+链表
  • 创建时初始化容量为16

JDK1.8之后:

HashMap的底层结构为数组+链表+红黑树

创建时不初始化,存入第一个值是初始化 容量为16

通过键的hashcode与容量值取余,得到键的存放节点,如果该节点上无其他键,则直接存放,若为同键,则值覆盖,若为不同键,则按链表存储,当该节点下存放的键超过7个时,则按红黑树存储

7. 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?

不对,两个对象的hashCode()相同,equals()不一定为true。

代码示例:

String str1 = "通话";
String str2 = "重地";
System.out.println(String.format("str1:%d | str2:%d",  str1.hashCode(),str2.hashCode()));
System.out.println(str1.equals(str2));


执行的结果

str1:1179395 | str2:1179395

false

代码解读:很显然“通话”和“重地”的 hashCode() 相同,然而 equals() 则为 false,因为在散列表中,hashCode()相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等。

8. 集合框架的特点

List:有序,可重复

Set:无序,不可重复

Map:无序,键不重复,值可重复

9. 集合框架底层结构的优缺点

类别优点缺点
数组有下标索引,遍历快中间插入和删除开销大 长度固定,不利于扩展
链表插入和删除效率高遍历的效率低
红黑树二分查找平衡算法开销大 区间检索效率低
HashMap键值映射Hash冲突

10. String、StringBuffer、StringBuilder对比

String:是不可变对象,每次对String类型进行改变其实都等同于生成一个新的String对象

StringBuffer:可变字符串,线程安全

StringBuilder:可变字符串,单线程,线程不安全

性能:StringBuilder>StringBuffer>String

11. String 类的常用方法都有哪些?

  • index():返回指定字符的索引
  • charAt():返回指定索引处的字符
  • replace():字符串替换
  • trim():去除字符串两端空白
  • split():分割字符串,返回一个分割后的字符串数组
  • getBytes():返回字符串byte类型数组
  • length():返回字符串长度
  • toLowerCase():将字符串转成小写字母
  • toUpperCase():将字符串转成大写字符
  • substring():截取字符串
  • equals():字符串比较

12. Java OOP 的特性和理解

继承:

  • 优点:允许和鼓励重用,面向修改是封闭的,面向扩展是开放的
  • 缺点:强耦合,单根继承
  • 父类的哪些内容不能被继承:构造方法、被 private 修饰的方法不能被子类访问

封装:

  • 把过程和数据包装起来

多态:

  • 继承同一接口的类的方法可以有多种实现方式
  • 重载:同类中,方法名相同,参数不同
  • 重写:子类重写父类的同名同参方法

13. 对抽象类 abstract 和接口 interface 的理解

抽象类 abstract:

  • 抽象类可以和不同类一样有属性,构造方法,普通方法
  • 抽象类可以有抽象方法,但不同类不可以有抽象方法
  • 继承抽象类的子类必须重写抽象方法,除非子类也是抽象类
  • 抽象类不可以直接实例化

接口 interface

  • 不可以像普通类一样有属性,构造方法,不同方法
  • 接口中的变量默认为公共的静态常量
  • 接口中的方法默认为公共的抽象方法
  • 子类必须重写接口中的所有方法,除非子类为抽象类或者接口
  • 不可以直接实例化

14. Java中正则的应用

  • 正则的理解:字符串符合自定义的规则
  • 应用:字符串提取、验证、提取、分割等

15. 对于线程的理解和应用

进程是运行程序,线程是进程内部的执行序列

应用:多线程并发,提高执行的性能(例如hadoop 按行读取时是并发执行的)

16. 对于锁的理解和应用

理解:在并发编程中,多个线程访问同一对象,为了保证数据的一致性,需要上锁

应用:

  • 独占锁:可以进行读写操作
  • 共享锁:只有读的权限
  • 互斥锁:同一时间只允许一个访问者对其访问
  • 读写锁:写只允许一个,读可以有多个

17. java中流分为几种?

按方向来分:输入流(input)、输出流(output)

按类型来分:字节流和字符流

按功能来分:节点流和处理流

  • 节点流:直接面向数据源,并封装对于数据源基本操作的流
  • 处理流:以节点流或其他处理流为构造参数,扩展对于构造对象的行为

18. Java中是如何实现对象的序列化和反序列化的?

  • 序列化:将对象写入IO流
  • 反序列化:从IO流中恢复对象
  • 实现序列化的两种方式:
    • 实现Seriazable接口或者Externalizable接口
    • 使用Externalizable接口必须实现writeExternal和ReadExternal方法
  • 如果想指定字段不被序列化,可以加transient关键词修饰,反序列化时会赋予默认值null/0/false

19. Files的常用方法有哪些?

  • Files.exists():检查文件路径是否已存在
  • Files.createFile():创建文件
  • Files.createDirectory():创建文件夹
  • Files.delete():删除一个文件或路径
  • Files.copy():复制文件
  • Files.move():移动文件
  • Files.size():查看文件个数
  • Files.read():读取文件
  • Files.write():写入文件

20. 谈谈关于 Java 反射的理解和应用

  • 理解:java 代码编译后会生成 .class 文件,反射是通过字节码文件找到一个类、类的属性和方法。
  • 反射的实现:
    • Class:获取类的对象
    • Constructor:获取类的构造方法
    • Field:获取类的属性
    • Method:获取类的方法
  • 应用:jdbc获取指定类的所有属性

21. jdbc 的标准接口有哪些,分别有什么作用?

  1. Driver 接口
    1. 定义数据库驱动对象应该具备的一些能力
    2. 加载驱动:Class.forName(“com.mysql.jdbc.Driver”);
  2. Connection 接口
    1. 创建与数据库的连接(会话)对象
    2. 连接数据库Connection conn = DriverManager.getConnection(String url, String user, String password);
  3. Statement 接口
    1. sql语句编译,有SQL注入风险
  4. PreparedStatement 接口
    1. sql语句预编译
    2. PreparedStatement pst = conn.preparestatement(String sql);
  5. ResultSet 接口
    1. 返回数据结果集
    2. 通过对结果集遍历,得到结果数据
  6. CallableStatement 接口
    1. 用于执行SQL存储过程的接口

22. Error 和 Exception区别

  • Error:错误
    • 硬件或系统级的问题,无法解决,只能捕获记录
  • Exception:异常
    • 可以捕获,可以解决或者尝试解决
    • 异常分类:
      • 运行时异常
      • 编译异常
      • 自定义异常
    • 异常解决方案:
      • 程序逻辑:运行时异常
      • 抛出:编译异常
        • 被应用层存在多个方法都存在异常问题,而应用层中需要对被应用层的多个存在异常的方法进行组合使用
      • 捕获:编译异常
        • 单一问题,或无处可抛(私有方法可以抛出,公共方法必须对异常捕获处理)

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

[外链图片转存中…(img-sJbzlN7k-1715803840654)]
[外链图片转存中…(img-k8sWbGr6-1715803840654)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  • 17
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值