快手提前批java后端一面面经

上来先按照惯例,自我介绍。然后我的自我介绍项目因为主要是做android的,面试官说了一下,然后又介绍了一下他们的部门。

  • 项目中哪一块有技术挑战性,或者说哪一块是最能show出你技术的。

  • 高并发情况下,怎么保证不会出现库存超卖。

  • Redis分布式锁,如果并发量特别大,会影响效率,怎么解决呢?

  • 我看到你用到了ES。我说了我这个ES只是用一下,没有深入去了解过,面试官就没问了。

  • java中的多态,是怎么实现多态的?能举一个多态使用的场景吗?

  • java中的重写和重载有什么区别?

  • java中都有哪些集合类?稍微介绍一下这几种。

  • ArrayList的底层是用什么实现?LinkedList底层用的是什么实现?

  • 随机访问一个元素应该用哪个呢?

  • java里面有hashmap和hashtable,它们有什么区别呢?

  • java多线程实现的几种方式。

  • 有几种常见的线程池的类型,介绍一下

  • 说一下jvm的简单调优,有哪几种方式。

  • 如果系统出现了问题,说一下你的排查思路

  • mysql什么时候加行锁,什么时候加表锁

  • mysql有哪几种类型的索引

  • 假设目前有一个联合索引(a,b,c) ,那么如果where条件里是c=1 and a=3会用到索引吗?如果是a=1 and b in (2,3) 会使用索引吗

算法题1:给定一个数组,让每个元素都最多出现一次,打印出所有的排列组合。

我一开始理解成了全排列的问题,用的dfs,面试官最后认为还是需要使用分解成子问题来做。

算法题2(不需要实现):两个有序数组合并。

给出我的全排列的实现(注意题目中要求是每个元素最多出现一次,我这个并不符合):


public class Interview {
    
    public static void main(String[] args) {
        char[] array = {'a', 'b', 'c', 'd'};
        List<Character> list = new ArrayList<>();
        for (int i = 0; i < array.length; i++) {
            list.add(array[i]);
        }
        dfs(array, 0, list);
    }


    private static void dfs(char[] array, int index, List<Character> list) {
        if (index == array.length) {
            // 到结尾了
            System.out.println(Arrays.toString(array));
            return;
        }

        // 修改array的值
        int len = list.size();
        for (int i = 0; i < len; i++) {
            array[index] = list.get(i);
            Character remove = list.remove(i);
            dfs(array, index + 1, list);
            list.add(i, remove);
        }
    }
}


反问:你觉得我表现怎么样?

#快手##Java工程师##面经##校招#
全部评论
请问楼主啥时候投的啊
点赞 回复
分享
发布于 2020-08-10 22:08
算法一不是求子集吗
点赞 回复
分享
发布于 2020-08-11 00:40
滴滴
校招火热招聘中
官网直投
你全部都答出来了吗?面试官给你的啥评价啊?
点赞 回复
分享
发布于 2020-08-22 12:00

相关推荐

2 25 评论
分享
牛客网
牛客企业服务