211230 | 云合智网 | 后端实习 | 精华

本文中Java基础相关问题极具参考价值

自我介绍

  1. Golang为什么更快,相对Java

操作系统

  1. 进程和线程的区别

  2. 多进程多线程的优点和缺点,什么情况下使用多线程、多进程

  3. chrome每个标签页都是个进程、IE每个标签页都是个线程,某个线程崩溃是否会对其他线程有影响?

  4. 协程与线程,资源分配..

  5. 进程间通信方式?Socket

计算机网络

  1. TCP/IP协议栈五层模型

  2. 各层的网络协议举例

  3. ARP协议作用,应用场景

Java

  1. Java为什么不支持多继承?

因为D同时继承了B和C,并且B和C又同时继承了A,那么,D中就会因为多重继承,继承到两份来自A中的属性和方法。 这时候,在使用D的时候,如果想要调用一个定义在A中的方法时,就会出现歧义。 因为这样的继承关系的形状类似于菱形,因此这个问题被形象地称为菱形继承问题。 而C++为了解决菱形继承问题,又引入了虚继承。

而在Java8之后interface中可以实现默认函数,当出现上述问题时,Java会抛出异常,提醒用户必须重写Override 相同的方法

  1. extends和implement的区别?

Extends可以理解为全盘继承了父类的功能。implements可以理解为为这个类附加一些额外的功能;interface定义一些方法,并没有实现,需要implements来实现才可用。extends是is-A的关系,implements是like-A的关系。

  1. Java中继承和组合的关系?如何选择继承和组合,分别的应用场景?

组合强调整体和部分,是has-A的关系,继承是is-A的关系,组合的耦合度比继承低;继承不支持动态扩展,组合支持动态扩展,可在运行时根据具体对象选择不同类型的组合对象(扩展性比继承好)

组合:Car类中存在轮子类、灯类,采用组合init; 继承:Bus继承自Car

  1. 成员变量、类变量、全局变量,分别在JVM的什么区域?

  2. Java中是值传递还是引用传递?Java中是值传递

把栈中存储的值进行传递,而栈的值可能是具体的值,也可能是对象在堆中的地址!https://www.zhihu.com/question/31203609/answer/709057109 若调用更改器方法,则源对象也会改变;若引用新对象,只是改变了原对象地址副本的指向,对源对象无影响。

  1. String为什么是不可变类型?

String 内部使用 char 数组存储数据 (Java 9之后采用byte数组存储),使用final修饰。不可变的优点 1. 缓存hash值 2. String Pool 3. 线程安全

  1. String用加号相加 实际是重载了哪个方法?

Java中不支持运算符重载,两个String用加号相加实际上使用StringBuilder初始化了两个对象,再进行append https://blog.csdn.net/qq_41701363/article/details/122277993

  1. StringBuffer和Stringbuild的区别?

StringBuffer线程安全,使用 synchronized 进行同步

  1. 线程安全的概念?

  2. 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
  1. 对List进行循环时如何安全的删除增加元素?

  2. 用过的设计模式?单例的实现方式?

  3. JVM项目

编程

找字符串数组的共同前缀

O(n^2)尝试优化到O(nlogn) 在优化到O(n)

反问

公司业务:网络芯片,网络交换机的运维软件

全部评论

相关推荐

mq2:我倒是觉得这种敞亮一点好。能接受就去不能就不去呗。 完了跟现在“正常”公司一样,hr说的天花乱坠,进去一看根本就是996核动力牛马,想走又没应届生身份了。岂不是更糟。
点赞 评论 收藏
分享
评论
3
6
分享

创作者周榜

更多
牛客网
牛客企业服务