一面
- 手写排序算法,查找算法,循环队列
- Java为什么可以跨平台?
答:因为Java编译产生的字节码文件,字节码文件可以在Java虚拟机上运行,因此可以跨平台。 - 基本数据类型的字节数?
int 4,char 2, double 8, float 4 - 为什么char是2个字节?
因为java采用的Unicode编码,所以对于中文来说,一个汉字在Unicode编码下占两个字节,所以java中char是支持一个中文字符的。 - b+树
http://www.cnblogs.com/oldhorse/archive/2009/11/16/1604009.html
二面
- 说一下查找算法
二分查找,二叉排序树查找,哈希查找 - 他们的最差时间复杂度和最好时间复杂度,以及分别出现的场景
二分查找:主要是利用了树查找的思想,所以时间复杂度为树的深度,树的深度性质:具有n个结点的完全二叉树的深度为[log2n] + 1,由此导出二分查找的时间复杂度为O(logn),最好的情况就是O(1),刚好就在mid位置
而叉排序树查找:最好O(logn),最差是非平衡状态O(n)
哈希查找:如果没有碰撞的时候,时间复杂度为O(1),当数字发生全部碰撞时,有最差时间复杂度为O(n) - 再说一下排序算法
冒泡排序,选择排序,插入排序,希尔排序,堆排序,归并排序,快速排序 - 他们的最差时间复杂度和最好时间复杂度,以及分别出现的场景
冒泡排序:最差O(n^2),最好是当这个是有序的,所以不用发生数据交换,为O(n)
选择排序:最差O(n^2),最好也是O(n^2)
插入排序:最差O(n^2),最好时,当它是有序的时候,为O(n)
希尔排序:
堆排序:最差最好都是O(nlogn),因为他对原始的排序状态不敏感
归并排序:最差最好都是O(nlogn)
快速排序:最差O(n^2),最好O(nlogn) - ArrayList和LinkedList的优缺点和使用场景
http://blog.youkuaiyun.com/jeffleo/article/details/55000058 - HashMap和TreeMap的实现原理和使用场景
- HashMap是如何扩容的
- 红黑树的旋转,以及时间复杂度分析
- 索引的优缺点
https://www.oschina.net/question/565065_86331
只记得起这些了,数据结构复习不充分,时间复杂度分析没答好,二面后回来等通知
一面
- 说一下项目
- 常用的容器类有哪些
- ArrayList和LinkedList的原理
- HashMap和HashSet的原理
- ConcurrentHashMap的原理
- 怎么样去构建线程安全
- 手写sql语句,写完后叫我优化这个sql语句,答索引,问我怎么加,然后问我了解最长前缀匹配
- 手写一道算法题
- final的作用:
意义: 最终的,不可改变的.
1, 修饰变量,为常量,值不可变;
2, 修饰对象,值可变,引用不变;
3, 修饰方法,方法不可重写.
4, 修饰类,无子类,不可以被继承,更不可能被重写.
二面
- 说我项目的架构设计,画图
- 怎么样去判断是否线程安全,怎么样构建使得线程安全(这里说了类的状态,happend-before之类的)
- 然后指点我这个项目,指出我这个项目不足,叫我回去好好钻研
- 问最近在干什么,平时喜欢干什么
- 学校在哪(想问学校离公司距离)
HR面
CVTE里面的员工我觉得态度很好,很热情,不像知乎说的那么黑
问的问题都是家庭情况,未来规划之类的。
(等通知中)