首页 > 去哪儿后台开发岗社招面经
头像
山鲁亚尔
编辑于 2021-06-19 17:02
+ 关注

去哪儿后台开发岗社招面经

· Java基本数据类型

·装箱和拆箱

· Java的特点

·怎么实现多态的

·什么动态绑定,什么是动态代理(这个没答好)

·熟悉哪些Java集合类

· ArrayList和LinkedList的区别和适用场景

· HashMap的底层实现,以及put 操作,hash函数,二次扰动,扩容机制

· LinkHashMap了解吗?(不了解)

· ConcurrentHashMap的底层实现,怎么做到线程安全的

·比较了JDK 1.7和JDK 1.8中HashMap和ConcurrentHashMap的不同

·写过多线程Java编程吗,都是怎么写的(答:Synchronized)

· Synchronized底层是怎么实现的,同步代码块和同步方法

·扯到了Synchronized的锁优化,偏向锁、轻量级锁、重量级锁

·说一下wait和sleep的区别

·可不可以自己手动加锁,手动加锁你怎么实现,底层又是怎么实现的(不太明白,扯

了lock和unlock指令)

·上面扯到指令,然后又开始了类加载机制

·对象何时初始化,初始化的顺序

·类加载器以及双亲委派机制,以及破坏双亲委派机制的场景

· Java怎么去实现共享操作,多线程访问同一数据(不了解)

·怎么创建线程,说一下线程池,自己手动构造线程池的核心参数,线程池的工作原理

·说一说AQS,底层怎么实现的(没答好,当时已经有点蒙了,问题太多了,也有很多没

答好)

·然后CAS是什么(这个我知道)

·说一下Future和FutureTask,以及他们之间的区别(说得七七八八)

·怎么实现在一个线程中,把计算结果这个操作放在一边执行,然后线程继续别的操作(不

了解)

·怎么实现多个计算线程全部到达之后再进行下一步的操作(我说

了CountDownLatch和join)

·最后算法题:给一个数组和target值,找出长度最长的且和等于target的连续子数组的长

度(写了个O(n^2)的,但是面试官说有O (n)的,我没想出来)

放下算法题代码,O(n)复杂度。

public class Main {

public static void main(String[] args) {

int[] nums = {1,3,4,5,1,1,1,1};

int target = 5;

System.out.println(maxLenthSubArray(nums,target));

}

public static int maxLenthSubArray(int[] nums, int target) {

int ans = 0;

int[] d = new int[nums.length];

d[0] = nums[0];

for (int i = 1; i < nums.length; i++) { d[i] = d[i - 1] + nums[i];

}

int pre = 0;

int last = 1;

while (last < nums.length && pre < nums.length){

if (d[last] - d[pre] == target){

if (ans < last - pre)

ans = last - pre;

last++;

continue;

}

if (d[last] - d[pre] > target)

pre++;

if (d[last] - d[pre] < target)

last++;

System.out.println(last + " " + pre); //看双指针的移动

}

return ans;

}

}


全部评论

(7) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期精华帖

热门推荐