上来先按照惯例,自我介绍。然后我的自我介绍项目因为主要是做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); } } }
反问:你觉得我表现怎么样?
全部评论
(3) 回帖