• 安卓面试总结(1)——Java基础


    前言

    之前换工作把自己学的内容总结了一下,虽然Java部分我写过十几篇读书笔记,详细的记录了Java8的内容,但是作为面试这样一个短暂的考试,详细的内容并没有很大的帮助,更重要的是精简与重点,所以最近打算把总结的内容全部写成博客,慢慢来吧!

    这里参考的是网上流传的很火的几个PDF,以及书籍,名称如下(如果有需要资源的可以私信我):

    Android核心知识点笔记V2020.03.30.pdf
    技术面试必备基础知识 CyC2018.pdf
    Java核心技术 卷1
    
    • 1
    • 2
    • 3

    这里如果说我是把资料抄了一边,也差不多吧,不过也有精简,也有加入自己的见解。内容较多,接下来慢慢写了。

    Java 基础

    1、数据类型
    • 8种
    • 自动装箱、拆箱
    • 缓存池(valueOf 函数、Interger 的128)
    2、String
    • final的
    • value 数组(final 的)–>不可变–>有何好处:hash、String Pool 、安全性、线程安全
    • StringBuilder 和 StringBuffer
    • String Pool(编译时)
    3、运算
    • 值传递(实质)

      • 值(修改临时变量)、
      • 指针(修改变量,另一个变量,同一个地址)、
      • 引用(修改变量内容,还是那个变量)
    • 类型转换

    • 隐式类型转换(++、+=)

    • switch

    4、继承
    • 访问权限(4个)

    • 类、类成员

    • 抽象类和接口区别?何时使用?

      1. 整体和功能的区别:类可以多携带信息
      2. 修饰符的区别:接口默认 public、接口字段默认 public static、完全抽象、默认方法(Java8)
      3. 实现数量:类只能实现一个,接口多个

      根据区别,可以得出使用的地方。

    • super 、this、构造函数

    • 重载和重写(实现多态)

      重写–>重新编写同一个方法的功能
      重载–>参数类型、个数、顺序

      重写三个限制条件?

      • 访问权限、
      • 返回类型、
      • 抛出异常类型

      重写的访问顺序?(4个)–> 注意参数的父类

      • this.func(this) --> super.func(this) --> this.func(super) --> super.func(super)
    5、object的通用方法(6 + 5)

    hashCode()、equals()、clone()、toString()、getClass()、finalize()

    • 锁相关的:
      notify()、notifyAll()、wait()、wait(timeout)、wait(timeout,nanos)

    • 哪几个是 native 方法?
      hashcode、clone、getClass、notify、notifyAll、wait(一个)

      少了 equals、toString、finalize、其他 wait

    • 等价和相等以及hash值相等的区别?

    • 如何判断对象等价?

      是否相等–>是否为空–>是否同类–>转换之后是否数据域相等

    • clone() 和 Cloneable接口?接口为空?深拷贝、浅拷贝?

    • finalize()方法?只标记一次,执行不可知

    6、关键字
    • final --> 类、方法、私有数据、临时变量、修饰基本类型、修饰引用类型

    • static --> 静态变量、静态方法、静态语句块、静态内部类、静态导包

      带static的初始化顺序:
      父类(静态变量、静态语句块)–> 子类(静态变量、静态语句块)–>
      父类(实例变量、普通语句块)–> 父类(构造函数)
      子类(实例变量、普通语句块)–> 子类(构造函数)

      先静态再实例,先父类再子类,先实例再构造,先前面再后面

    • volatile、synchronized 锁部分再说

    • transient 数组部分再说

    7、反射
    • class 对象、

    • 类加载(反射运行时加载)

    • 获得 class 对象的方法?

      1. getClass()
      2. forName()
    • 反射的三个类:Filed、Method、Constructor

    • 反射优缺点:扩展性、便于调试、性能开销、安全问题

    8、异常
    • Throwable --> Error、Exception

    • Error 两个? OutOfMemeoryError、StackOverflowError

    • 非受查异常(you fault)、受查异常(IO、socket)

    • 说五个常见异常?

      1. IllegalArgumentException、
      2. IndexOutOfBoundException、
      3. NullPointerException
      4. ClassNotFoundException(受查)
      5. SocketException(受查)
    9、泛型
    • 泛型类、泛型方法

    • 类型变量的限定:extend、super

    • 类型擦除:强制类型转换为限定的类型(没有则是 Object)

    • 桥方法?

    • 泛型类型的继承规则(通配符 、子类限定、超类限定)?

      1. 子类限定:可以用父类类型去 get (接受)子类类型的数据,但不能设置,因不知道数据的具体类型
      2. 超类限定:可以用子类类型去 set (存入)超类类型的数据,但无法取出,因为不能确定数据内存放的是什么类型
    下一篇

    安卓面试总结(2)——Java 集合框架

  • 相关阅读:
    三万字带你了解那些年面过的Java八股文
    RabbitMQ学习整理————基于RabbitMQ实现RPC
    CKA、CKAD、CKS、LFCS、LFCA、LFCE 60$ 刀优惠券
    更适合电音的蓝牙耳机,设计真的很潮,哈氪零度青春版上手
    Day119.尚医通:取消预约(微信退款)、就医提醒(定时任务)、预约统计
    LeetCode刷题复盘笔记—一文搞懂完全背包之279. 完全平方数问题(动态规划系列第十五篇)
    lombok总结
    Python字符串拼接的几种方法
    查看linux是多少位的
    2023年【天津市安全员C证】模拟考试及天津市安全员C证实操考试视频
  • 原文地址:https://blog.csdn.net/lfq88/article/details/126908783