中国系统面经
很基础,只有两面,招人还多,兄弟姐妹们冲啊!以此面经许愿
- 自我介绍、项目介绍
- 实习最大的收获是什么
- 项目中遇到的问题
-
面向对象的三大特征以及简单解释
1)封装是把客观事物封装成抽象的类,并且隐藏对象的属性和实现细节,仅对外公开接口
2)继承可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
3)多态指同一个行为具有多个不同表现形式或形态的能力。
-
重写和重载,返回值不同是重载吗
1)重写就是当⼦类继承⾃⽗类的相同⽅法,输⼊数据⼀样,但要做出有别于⽗类的响应;.重载就是同样的⼀个⽅法能够根据输⼊数据的不同,做出不同的处理。
2)重写发生在子类,参数列表不能修改。重载发⽣在同⼀个类中,⽅法名必须相同,参数类型不同、个数不同、顺序不同
3)重写发生在运行期,重载发生在编译期
重写的注意事项:访问修饰符范围不能变小,异常不能更广
返回值不同不是重载
-
值传递、引用传递的区别
1)值传递: 将原变量内容复制下来,再用一个新的内存空间来保存,两个变量之间相互独立; 函数范围内对值的任何改变在函数外部都会被忽略2)引用传递: 给当前变量起了一个别名,实际上这两个变量引用的是一个值。函数范围内对值的任何改变在函数外部也能反映出这些修改, 它们指向同一内存空间. -
jdk、jvm、jre的区别和联系,哪个提供垃圾回收
1)JVM是运⾏ Java 字节码的虚拟机,针对不同系统的特定实现
2)JDK是Java开发工具包,能够创建和编译程序,它拥有 JRE 所拥有的⼀切,还有编译器(javac)和⼯具(如 javadoc 和 jdb)。
3)JRE 是 Java 运⾏时环境。它是运⾏已编译 Java 程序所需的所有内容的集合,包括 JVM,Java 类库,java 命令和其他的⼀些基础构件。但是,它不能⽤于创建新程序
-
hashMap和hashTable
1)线程安全的角度。hashmap线程安全,hashtable线程不安全(要保证线程安全的话就使⽤ ConcurrentHashMap)
2)效率角度。HashMap 要⽐ HashTable 效率⾼⼀点
3)对Null⽀持: HashMap 中,null 可以作为键,这样的键只有⼀个,可以有⼀个或多个键所对应的值为 null。但是在 HashTable 中 put 进的键值只要有⼀个 null,直接抛出 NullPointerException
4)初始容量⼤⼩和每次扩充容量⼤⼩的不同。①创建时如果不指定容量初始值,Hashtable 默认的初始⼤⼩为11,之后每次扩充,容量变为原来的2n+1。HashMap 默认的初始化⼤⼩为16。之后每次扩充,容量变为原来的2倍。②创建时如果给定了容量初始值,那么 Hashtable 会直接使⽤你给定的⼤⼩,⽽ HashMap 会将其扩充为2的幂次⽅⼤⼩
5)底层数据结构不同。JDK1.8 以后的 HashMap ,当链表⻓度⼤于阈值(默认为8)时转化为红⿊树。Hashtable 没有这样的机制
-
list和set的区别,有序性方面的区别
1)List 可以控制元素的插⼊位置,可以通过整数索引访问元素,并搜索列表中的元素。
2)List 允许重复的元素,Set不允许。
3)List 是有序集合⽽ Set 是⽆序集合。
-
线程的状态和转换过程,说一下sleep
1)New:当程序使用new关键字创建了一个线程之后,该线程就处于新建状态
2)Runnable:当线程对象调用了start()方法之后,该线程处于就绪状态
3)Running Man:如果处于就绪状态的线程获得了CPU,开始执行run()方法的线程执行体,则该线程处于运行状态
4)Block:当处于运行状态的线程失去所占用资源之后,便进入阻塞状态
5)Dead:运行结束、stop()、异常
https://blog.csdn.net/u014421556/article/details/79666409
-
treetLocal(不清楚)
听着不太对,是不是问的 ThreadLocal?ThreadLocal 类主要解决的就是让每个线程绑定⾃⼰的值,如果你创建了⼀个 ThreadLocal 变量,那么访问这个变量的每个线程都会有这个变量的本地副本,可以使⽤get和set⽅法来获取默认值或将其值更改为当前线程所存的副本的值,从⽽避免了线程安全问题
-
JVM的划分
懒得打了,歇一下 -
JIT即时编译(不清楚)
just in time 的缩写,即时编译器技术。在运行时 JIT 会把翻译过的机器码保存起来,以备下次使用,使用JIT能够加速 Java 程序的执行速度。
- 垃圾回收算法;CMS
-
内存泄漏和内存溢出的区别
内存溢出就是指程序运行过程中申请的内存大于系统能够提供的内存,导致无法申请到足够的内存,于是就发生了内存溢出
内存泄漏指程序运行过程中分配内存给临时变量,用完之后却没有被GC回收,始终占用着内存,既不能被使用也不能分配给其他程序,于是就发生了内存泄漏。
-
三次握手的过程;挥手为什么是四次
略 -
http是哪一层?常用状态码?301是?
应用层;1开头表示正在处理,2开头表示请求已正确处理,3开头表示需要进行附加操作如重定向,4开头表示客户端错误导致服务器无法处理,5开头表示服务器错误。301表示永久性重定向。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替 -
数据库中的锁有哪些种类?什么情况会引起表锁?
分类不同,答案不唯一。表锁、行锁、页面锁。表锁:索引失效;事务需要更新大部分数据;事务涉及多个表 -
事务、事务的特性
事务是应用程序中一系列逻辑相关的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。
ACID。原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态。隔离性指一个事务的执行不能其它事务干扰。永久性指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的,不能回滚 -
隔离级别
读未提交、读已提交、可重复读、可串行化
https://blog.csdn.net/weixin_43081805/article/details/98493923
HR面时间:20min,常规聊天
对公司了解情况:智慧城市下的云计算部门,面向政府。研发部门在北京、武汉、南京,其余城市是销售,北京刚搬到华熙live,大概三层,技术栈比较稳定(Java、Vue、SpringCloud)。有较少的户口名额。
个人总结:答得七七八八吧,复盘的时候发现有的地方嘴瓢了,心里想的和嘴上说的不一样哈哈哈哈。anyway,看周一前有没有最终通知吧
#面经##校招##Java工程师##中国系统#