211230 | 云合智网 | 后端实习 | 精华
本文中Java基础相关问题极具参考价值
自我介绍
- Golang为什么更快,相对Java
操作系统
-
进程和线程的区别
-
多进程多线程的优点和缺点,什么情况下使用多线程、多进程
-
chrome每个标签页都是个进程、IE每个标签页都是个线程,某个线程崩溃是否会对其他线程有影响?
-
协程与线程,资源分配..
-
进程间通信方式?Socket
计算机网络
-
TCP/IP协议栈五层模型
-
各层的网络协议举例
-
ARP协议作用,应用场景
Java
- Java为什么不支持多继承?
因为D同时继承了B和C,并且B和C又同时继承了A,那么,D中就会因为多重继承,继承到两份来自A中的属性和方法。 这时候,在使用D的时候,如果想要调用一个定义在A中的方法时,就会出现歧义。 因为这样的继承关系的形状类似于菱形,因此这个问题被形象地称为菱形继承问题。 而C++为了解决菱形继承问题,又引入了虚继承。
而在Java8之后interface中可以实现默认函数,当出现上述问题时,Java会抛出异常,提醒用户必须重写Override 相同的方法
- extends和implement的区别?
Extends可以理解为全盘继承了父类的功能。implements可以理解为为这个类附加一些额外的功能;interface定义一些方法,并没有实现,需要implements来实现才可用。extends是is-A的关系,implements是like-A的关系。
- Java中继承和组合的关系?如何选择继承和组合,分别的应用场景?
组合强调整体和部分,是has-A的关系,继承是is-A的关系,组合的耦合度比继承低;继承不支持动态扩展,组合支持动态扩展,可在运行时根据具体对象选择不同类型的组合对象(扩展性比继承好)
组合:Car类中存在轮子类、灯类,采用组合init; 继承:Bus继承自Car
-
成员变量、类变量、全局变量,分别在JVM的什么区域?
-
Java中是值传递还是引用传递?Java中是值传递
把栈中存储的值进行传递,而栈的值可能是具体的值,也可能是对象在堆中的地址!https://www.zhihu.com/question/31203609/answer/709057109 若调用更改器方法,则源对象也会改变;若引用新对象,只是改变了原对象地址副本的指向,对源对象无影响。
- String为什么是不可变类型?
String 内部使用 char 数组存储数据 (Java 9之后采用byte数组存储),使用final修饰。不可变的优点 1. 缓存hash值 2. String Pool 3. 线程安全
- String用加号相加 实际是重载了哪个方法?
Java中不支持运算符重载,两个String用加号相加实际上使用StringBuilder初始化了两个对象,再进行append https://blog.csdn.net/qq_41701363/article/details/122277993
- StringBuffer和Stringbuild的区别?
StringBuffer线程安全,使用 synchronized 进行同步
-
线程安全的概念?
-
String = "HelloWorld" 发生的内存操作
// 字面量初始化后放入String Pool引用相同
String s5 = "bbb";
String s6 = "bbb";
System.out.println(s5 == s6); // true
// new出来的对象引用不同
String s1 = new String("bbb");
String s2 = new String("bbb");
System.out.println(s1 == s2); // false
-
对List进行循环时如何安全的删除增加元素?
-
用过的设计模式?单例的实现方式?
-
JVM项目
编程
找字符串数组的共同前缀
O(n^2)尝试优化到O(nlogn) 在优化到O(n)
反问
公司业务:网络芯片,网络交换机的运维软件