- 正则表达式: 查找符合某些复杂规则的字符串,正则表达式就是记录文本规则的代码。
- 基本数据类型: byte,int,char,long,float,double,boolean和short。
- 自动拆装箱: 自动装箱就是Java编译器在基本数据类型和对应的 对象包装类型 之间做的一个转化。(如int——>Integer,double——>Double)反之就是自动拆箱。
- 大O符号: 数据结构里元素增加时,算法的规模或是性能在最坏的场景下有多好;内存消耗;一个程序运行时所需要的渐进时间复杂度上界。
- Array VS ArrayList
- Array:包含基本类型和对象类型、大小固定。
- ArrayList:只包含对象类型、大小动态变化。
- 值传递和引用传递
- 值传递(基本变量):传递的是变量副本,改变副本不影响原变量;
- 引用传递(对象型变量):传递的是对象地址副本,对引用对象操作会同时改变原对象。
- 为什么会有4.0-3.6=0.40000001这种现象?
2进制小数无法精确的表达10进制小数。计算10进制小数要先转换为2进制计算,这个过程中出现了误差。 - Java新特性
- Lamda表达式——允许把函数作为参考传递进方法中
- 方法引用——可以直接引用已有Java类或对象的方法或构造器
- 默认方法——默认方法就是一个在接口里面有了一个实现方法
- optional类——解决空指针异常
- String、StringBuffer、StringBuilder的区别
- String是final类型,不可修改,不可继承;
由于它的不可变性,类似拼接,裁剪字符串等动作都会产生大量无用的中间对象。 - StringBuffer主要还是用来拼接字符串的,长度可以定义
- StringBuilder功能同StringBuffer,只是没有处理线程安全,减少了开销。
- String是final类型,不可修改,不可继承;
变量不经常变动优先使用String;
拼接频繁使用StringBuffer(多线程)和StringBuilder(单线程)
- Java线程状态: 创建状态(New)、就绪状态(Runnable)、运行状态(Running)、阻塞状态(Blocked)、死亡状态(Dead)。
- http请求过程
- DNS解析
- 建立TCP连接
- 发送HTTP请求
- 服务器处理请求返回HTTP报文
- 浏览器解析渲染页面