旷视科技面试题目总结(后端开发半年经验)
一面:
算法:
翻转链表
翻转二叉树
并查集
数据库:mysql 更新一条数据需要刷新几次磁盘?为什么? 为什么用 b+树?b 树呢?
网络:tcp 三次握手,为什么不是两次,四次?三次握手发的数据是什么?? 四次挥手?为什么不是三次??中间为什么是两次??为什么要 time_wait?出现大量 time_wait 怎么办? ssl 原理?
java: 启动一个 hello world 程序发生了什么? 你怎么看待虚拟机?物理机和程序之间隔了一层虚拟机有什么好处? JMM 讲一下? ArrayList 扩容?HashMap 讲一下?(有多少讲多少) 什么情况会出现线程安全?怎么解决?? syncronized 实现?(监视器模型) 原子类实现?unsafe 类的功能有哪些??
如何用Java 的 Executor 来创建线程池?
线程池如何配置?
说一下数据库连接池,连接池最小和最大连接数?何时达到最大连接数?HashMap 数据结构 put 的过程,源码看过没有?
hashcode 和 equals 有什么区别?
Spring 说一下 IoC 底层如何实现 IoC?
设计模式用过哪些?有没有用过单例模式?
线程有哪些状态?
如何构造一个线程?Runnable 和 Callable 与什么区别? 如何启动一个线程?
一面两小时,第二天打电话约二面。
二面:
A 方法打印 A,B 方法打印 B,C 方法打印 C 方法执行序列 ABC,两条线程怎么打印 AABBCC。 (给了三个方案,wait/notify 机制,condition,线程组成链表 1->2->1->2 交替执行,后面的 等前面的锁)
研究过字节码??
创建一个对象过程?(三个指令,new,dup, invokespecial)开辟空间,调用构造器初始化 lambda 表达式的实现?
#面经##旷视##Java工程师##社招#