临时问题:
1. Linux755权限含义:
1. Java基础:
①JAVA中的几种基本类型,各占用多少字节:
【引用数据类型:类、接口、数组、String、空类型null;】
②String、StringBuilder、StringBuffer区别:
(若对字符串内容进行操作修改时用 StringBuffer,最后需要用 String,则用 StringBuffer的 toString()(eg: sb.append(“b”).toString() );)
不同点:② StringBuffer 自jdk1.0起就已经出现。其中的绝大多数方法都进行了同步处理,包括常用的Append方法也做了同步处理(synchronized修饰)。其toString方法会进行对象缓存,以减少元素复制开销。
public synchronized String toString() {
if (toStringCache == null) {
toStringCache = Arrays.copyOfRange(value, 0, count);
}
return new String(toStringCache, true);
}
StringBuilder 字符串变量(非线程安全)其自jdk1.5起开始出现。与StringBuffer一样都继承和实现了同样的接口和类,方法除了没使用synch修饰以外基本一致,不同之处在于最后toString的时候,会直接返回一个新对象。
public String toString() {
// Create a copy, don’t share the array
return new String(value, 0, count);
}
③作用域 public、protected、default、private的区别
④抽象类和接口有什么区别:
【抽象类和接口区别:】
同: 两者都不能实例化;
异:
① 抽象类有构造方法(抽象类虽不能实例化,但有构造方法,提供给子类调用),接口没有构造方法;
② 类只能继承一个抽象类,可实现多个接口;(接口不能继承类,不能实现接口,但可继承多个接口,接口与接口之间是继承关系)
③ 抽象类可以不含抽象方法,可以含有具体的方法;接口只能含有静态常量和抽象方法,接口中不能有静态方法;如果一个方法是 abstract,则此类一定是 abstract(abstract方法不能是 private,因为要被重写,private无法重写了)(静态常量:默认 public static final,修饰符可全部省略或省略一个;抽象方法:可省略 abstract、public或任一个,但子类实现时会自动添加 public,因为默认是 public)
④ 一旦一个类去继承抽象类,则此类要么实现抽象类中的抽象方法,要么继续抽象下去;
⑤Java中的IO流分为几种?
⑥overload重载 和 override重写:
overload 重载是一个类中多态性的一种表现; 一个类中:同名不同参
override 重写是父类与子类间多态性的一种变现;父子间:同名同参同返回类型;
(子类重写方法的访问权限 大于等于 父类被重写的方法的访问权限;父类私有的方法不能被重写)
⑦JDK8用过哪些新特性
① 1.8中 Switch语句支持 String类型比对;
② 泛型实例的创建可通过类型推断来简化;(eg:List strList=new ArrayList<>();,即 <>中原本 String可以省略)
③ Lambda表达式;
④ HashMap数组+链表+红黑树,JDK1.8引入了红黑树部分;
即:
① 速度更快——红黑树;
② 代码更少——Lambda表达式;
③ 强大的Stream API——Stream;
④ 便于并行——Parallel;
⑤ 最大化减少空指针异常——Optional;
2. 容器
①用集合实现过什么功能?:
3. 多线程
①Callable 和runnable区别:
②创建线程池的几种方式:
主要就是 ThreadPoolExecutor类的使用构造函数,四构造函数中各参数代表的意思:
corePoolSize:核心池大小;
maximumPoolSize:线程池最大线程数;
keepAliveTime:线程没有任务执行时最多存活时间;
unit:为 keepAliveTime设置时间单位;
还有几种常见的线程池:newSigleThreadExecutor、newCachedThreadPool、newFixedThreadPool、newSigleThreadScheduledExecutor、newScheduledThreadPool
eg: