面的软件开发工程师,简历里写了主语言java,问了不少java,面试先自我介绍,问了下成绩,然后问了下项目,大概持续二十分钟
笔试
1.输出一个链表中间元素:
方法1:先计算链表长度length,然后循环遍历length/2
方法2:一个慢指针(一次一步),一个快指针(一次两步),快的到头了慢的到中间了
2.判断四边形是凸四边形
四边向量叉乘大于零
3.大数乘法
把大整数存到StringBuffer中做(用long接收也会溢出)
面试
-
1.hashmap和hashtable
- 区别,定义
-
2.volatile关键字
-
3.快速排序
- 介绍,时间复杂度
- 最坏情况,什么情况下最坏
-
4.TCP三次握手
-
5.JAVA同步关键字
-
6.判断链表有环
- 快慢指针(慢指针一次走一步,快指针一次走两步),当慢指针追上快指针的时候快指针还么有走到链表头,说明有环
- 初次相遇的地方就是环的入口
-
7.override和overload
-
override重写(覆盖)
- 父类子类多态的表现,
- 子类定义的方法和父类有相同的名称,参数(必须完全匹配才能覆盖上)
- 方法被定义为final就不能再重写覆盖了
- 方法在父类中是private,就不能在子类中对其重写覆盖,如果定义也只是定义了一个新方法。
-
overload重载
- 参数个数,参数类型,参数顺序有不同的就是重载
- 重载一般发生在同一个类,不同方法之间。