JAVA基础复习

面试题笔记

Java基础

  1. String内部是用char[]数组实现的

  2. char存储的unicode码,不仅可以存储ascII码,汉字也可以

  3. public:可以被所有其他类所访问;

    protected:自身、子类及同一个包中类可以访问;

    default:同一包中的类可以访问;

    private:只能被自己访问和修改。

    public>protcted>default>priavte

  4. 对于抽象类, 可以被抽象类继承,也可以被非抽象类继承

  5. switch语句后的控制表达式只能是short、char、int、long整数类型和枚举类型,不能是float,double和boolean类型。String类型是java7开始支持。

  6. ACID

    原子性:事务是一组不可分割的操作单元,这组单元要么同时成功要么同时失败(由DBMS的事务管理子系统来实现);
    一致性:事务前后的数据完整性要保持一致(由DBMS的完整性子系统执行测试任务);
    隔离性:多个用户的事务之间不要相互影响,要相互隔离(由DBMS的并发控制子系统实现);
    持久性:一个事务一旦提交,那么它对数据库产生的影响就是永久的不可逆的,如果后面再回滚或者出异常,都不会影响已提交的事务(由DBMS的恢复管理子系统实现的)
    
  7. jre判断程序执行结束的标准是前台线程全部执行完成

  8. 重载:返回值无所谓,函数名要相同,参数要不同

  9. \1. HashMap,TreeMap 未进行同步考虑,是线程不安全的。

    \2. HashTable 和 ConcurrentHashMap 都是线程安全的。区别在于他们对加锁的范围不同,HashTable 对整张Hash表进行加锁,而ConcurrentHashMap将Hash表分为16桶(segment),每次只对需要的桶进行加锁。

    \3. Collections 类提供了synchronizedXxx()方法,可以将指定的集合包装成线程同步的集合。比如,

    List list = Collections.synchronizedList(new ArrayList());

    Set set = Collections.synchronizedSet(new HashSet());

  10. Java中基本的数据类型所占字节

    boolean、byte:1字节、

    char、short:2字节、

    int、float:4字节、

    long、double:8字节

    1字节范围是-128——+127

  11. 匿名内部类:

    \1 使用匿名内部类时,必须继承一个类或接口

    \2 匿名内部类由于没有名字,因此不能定义构造函数

    \3匿名内部类不能含有静态成员变量和静态方法

  12. ThreadLocalmap使用开放定址法解决哈希冲突,hashmap使用链地址法解决hash冲突

  13. \1. List 是一个有序集合,可以存放重复的数据 (有序:存进是什么顺序,取出时还是什么顺序)

    ​ (1).ArrayList 底层是数组适合查询,不适合增删元素。

    ​ (2).LiskedList 底层是双向链表适合增删元素,不适合查询操作。 ​ (3).Vector 底层和ArrayList相同,但是Vector是线程安全的,效率较低很少使用

    \2. Set 是一个无序集合,不允许放重复的数据 (无序不可重复,存进和取出的顺序不一样) (1).HashSet 底层是哈希表/散列表 (2).TreeSet 继承sartedSet接口(无需不可重复,但存进去的元素可以按照元素的大小自动排序)

    \3. Map 是一个无序集合,以键值对的方式存放数据,键对象不允许重复,值对象可以重复。

    ​ (1).HashMap实现不同步,线程不安全。 HashTable线程安全

    ​ (2).HashMap中的key-value都是存储在Entry中的。

    ​ (3).HashMap可以存null键和null值,不保证元素的顺序恒久不变,它的底层使用的是数组和链表,通过hashCode()方法和equals方法保证键的唯一性

  14. 一个抽象类可以是public、private、protected、default,
       接口只有public;
    一个抽象类中的方法可以是public、private、protected、default,
       接口中的方法只能是public和default
    
  15. 1.静态内部类才可以声明静态方法

    2.静态方法不可以使用非静态变量

    3.抽象方法不可以有函数体

  16. 字符流=字节流+编码集

和字符流有关的类都拥有操作编码集(unicode)的能力 
 后缀是Stream的都是字节流,其他的都是字符流 

17. 异常

异常分为两种,一种为运行异常RuntimeException,另一种为检查异常CheckedException。

对于运行异常,编译器没有强制对其进行捕获。会把异常一直往上层抛出,直到遇到处理代码为止。常见的运行异常有:nullpointexception(空指针异常),indexoutofboundexception(越界异常)。。。。。

检查异常,所有继承自Exception并且不是运行异常的都是检查异常,在程序中需要用try catch进行捕获。常见的有IO异常和SQL异常。

18. 类加载器

```
引导类加载器(bootstrap class loader):它用来加载 Java 的核心库,是用原生代码来实现的,(c++实现)
    
扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。
    
系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类
    
tomcat为每个App创建一个Loader,里面保存着此WebApp的ClassLoader。需要加载WebApp下的类时,就取出ClassLoader来使用
    
扩展类和系统类都是java实现
```

19. ##### 抽象类

特点:
1.抽象类中可以构造方法
2.抽象类中可以存在普通属性,方法,静态属性和方法。
3.抽象类中可以存在抽象方法。
4.**如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。**
5.抽象类中的抽象方法,需要有子类实现,**如果子类不实现,则子类也需要定义为抽象的。**
6,**抽象类不能被实例化,抽象类和抽象方法必须被abstract修饰**

关键字使用注意:
抽象类中的抽象方法(其前有abstract修饰)不能用private、static、synchronized、native访问修饰符修饰。

##### 接口

1.在接口中只有方法的声明,没有方法体。
2.**在接口中只有常量,因为定义的变量,在编译的时候都会默认加上public static final**
3.**在接口中的方法,永远都被public来修饰**。
4.**接口中没有构造方法,也不能实例化接口的对象**。(所以接口不能继承类)
5.接口可以实现多继承
6.**接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法则实现类定义为抽象类。**
7,接口可以继承接口,用extends

20. 标识符:

  **1. 只能由数字,字母,符号(有且仅有_和$两个)组成。**

  **2. 数字不能作为标识符的开头。**

  **3. 不能和关键字,保留字,显式常量一样。关键字都是小写的。**

  **4. null,true,false都不是关键字,属于显式常量。goto,const都是保留关键字。**

21. img

异常分为可处理和不可处理异常,

不可处理异常有OOM,StackOverFlow(进程空间栈不够用的异常)等,是虚拟机异常

程序可处理异常包括:检查时异常和非检查时异常

​			检查时异常:SQL、IO、File 等

​			非检查异常:空指针、数组越界、算法异常、数字格式化异常等

22. JAVA常用的节点流:

- 文 件 FileInputStream FileOutputStrean FileReader FileWriter 文件进行处理的节点流。
- 字符串 StringReader StringWriter 对字符串进行处理的节点流。
- 数 组 ByteArrayInputStream ByteArrayOutputStreamCharArrayReader CharArrayWriter 对数组进行处理的节点流(对应的不再是文件,而是内存中的一个数组)。
- 管 道 PipedInputStream PipedOutputStream PipedReaderPipedWriter对管道进行处理的节点流。

**常用处理流(关闭处理流使用关闭里面的节点流)**

- 缓冲流:BufferedInputStrean BufferedOutputStream BufferedReader BufferedWriter 增加缓冲功能,避免频繁读写硬盘。

- 转换流:InputStreamReader OutputStreamReader 实现字节流和字符流之间的转换。
- 数据流 DataInputStream DataOutputStream 等-提供将基础数据类型写入到文件中,或者读取出来.

23. synchronized: 具有原子性,有序性和可见性;(三个都有) volatile:具有有序性和可见性(缺一个原子性)

  1. final

    修饰类、方法、属性!不能修饰抽象类,因为抽象类一般都是需要被继承的,final修饰后就不能继承了。

    final修饰的方法不能被重写而不是重载!

    final修饰属性,此属性就是一个常量,不能被再次赋值!

全部评论

相关推荐

深夜书店vv:腾讯是这样的,去年很多走廊都加桌子当工区
点赞 评论 收藏
分享
风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务