Java中级⾯试题及答案整理(2021年Java⾯试题答案⼤汇总)Java⾯试题及答案【最新版】Java⾼级⾯试题⼤全(2021版),发现⽹上很多Java⾯试题及答案整理都没有答案,所以花了很长时间搜集,本
套Java⾯试题⼤全,Java⾯试题⼤汇总,有⼤量经典的Java⾯试题以及答案,包含Java语⾔常见⾯试题、Java⼯程师⾼级⾯试题及⼀些⼤⼚Java开发⾯试宝典,⾯试经验技巧等,应届⽣,实习⽣,企业⼯作过的,都可参考学习!
这套Java⾯试题汇总⼤全,希望对⼤家有帮助哈~
继承 Thread 类
实现 Runnable 接⼝
实现 Callable 接⼝,需要实现的是 call() ⽅法java replace方法
HashSet 的内部采⽤ HashMap来实现。由于 Map 需要 key 和 value,所以所有 key 的都有⼀个默认 value。类似于 HashMap,HashSet 不允许重复的 key,只允许有⼀个null key,意思就是 HashSet 中只允许存储⼀个 null 对象。
⾸先,我们看下⼏个核⼼概念:
1、 Store:保存数据的地⽅,你可以把它看成⼀个容器,整个应⽤只能有⼀个Store。
2、 State:Store对象包含所有数据,如果想得到某个时点的数据,就要对Store⽣成快照,这种时点的数据集合,就叫做State。
3、 Action:State的变化,会导致View的变化。但是,⽤户接触不到State,只能接触到View。所以,State的变化必须是View导致的。Action就是View发出的通知,表⽰State应该要发⽣变化了。
4、 Action Creator:View要发送多少种消息,就会有多少种Action。如果都⼿写,会很⿇烦,所以我们定义⼀个函数来⽣成Action,这个函数就叫Action Creator。
5、 Reducer:Store收到Action以后,必须给出⼀个新的State,这样View才会发⽣变化。这种State的计算过程就叫做Reducer。Reducer 是⼀个函数,它接受Action和当前State作为参数,返回⼀个新的State。
6、 dispatch:是View发出Action的唯⼀⽅法。
然后我们过下整个⼯作流程:
1、⾸先,⽤户(通过View)发出Action,发出⽅式就⽤到了dispatch⽅法。
2、然后,Store⾃动调⽤Reducer,并且传⼊两个参数:当前State和收到的Action,Reducer会返回新的State
3、 State⼀旦有变化,Store就会调⽤监听函数,来更新View。
到这⼉为⽌,⼀次⽤户交互流程结束。可以看到,在整个流程中数据都是单向流动的,这种⽅式保证了流程的清晰。
1、 charAt:返回指定索引处的字符
2、 indexOf():返回指定字符的索引
3、 replace():字符串替换
4、 trim():去除字符串两端空⽩
5、 split():分割字符串,返回⼀个分割后的字符串数组
6、 getBytes():返回字符串的byte类型数组
7、 length():返回字符串长度
8、 toLowerCase():将字符串转成⼩写字母
9、 toUpperCase():将字符串转成⼤写字符
10、 substring():截取字符串
11、 format():格式化字符串
12、 equals():字符串⽐较
OOM是⾮常严重的问题,除了程序计数器,其他内存区域都有溢出的风险。和我们平常⼯作最密切的,就是堆溢出。另外,元空间在⽅法区内容⾮常多的情况下也会溢出。还有就是栈溢出,这个通常影响⽐较⼩。堆外也有溢出的可能,这个就⽐较难排查⼀些。
ParNew 垃圾收集器其实是 Serial 收集器的多线程版本,也使⽤复制算法,除了使⽤多线程进⾏垃圾收集之外,其余的⾏为和 Serial 收集器
完全⼀样, ParNew 垃圾收集器在垃圾收集过程中同样也要暂停所有其他的⼯作线程。
ParNew 收集器默认开启和 CPU 数⽬相同的线程数,可以通过-XX:ParallelGCThreads 参数来限制垃圾收集器的线程数。【Parallel:平⾏的】
ParNew 虽然是除了多线程外和Serial 收集器⼏乎完全⼀样,但是ParNew垃圾收集器是很多 java虚拟机运⾏在 Server 模式下新⽣代的默认垃圾收集器。
Java 中,可以使⽤ SimpleDateFormat 类或者 joda-time 库来格式⽇期。DateFormat 类允许你使⽤多种流⾏的格式来格式化⽇期。参见中的⽰例代码,代码中演⽰了将⽇期格式化成不同的格式,如 dd-MM-yyyy 或 ddMMyyyy。
任何⼀种可以运⾏Java字节码的软件均可看成是Java的虚拟机(JVM)
同步集合与并发集合都为多线程和并发提供了合适的线程安全的集合,不过并发集合的可扩展性更⾼。在 Java1.5 之前程序员们只有同步集合来⽤且在多线程并发的时候会导致争⽤,阻碍了系统的扩展性。Java5 介绍了并发集合像ConcurrentHashMap,不仅提供线程安全还⽤锁分离和内部分区等现代技术提⾼了可扩展性。
这个问题与前⾯的类似,适配器模式和代理模式的区别在于他们的意图不同。由于适配器模式和代理模式都是封装真正执⾏动作的类,因此结构是⼀致的,但是适配器模式⽤于接⼝之间的转换,⽽代理模式则是增加⼀个额外的中间层,以便⽀持分配、控制或智能访问。