阿里云,后端一面(将近两个小时的血战)
算法:
1、手写单例模式(写了一个双重校验)
2、不定长二位数组排序后输出 :([ [2, 3, 42, 36, 1], [3, 34, 21], [50]]) 类似这种测试用例
3、数组中出现次数超过数组长度25%的数字(两种方法:第一种hashmap 时间复杂度O(n)空间复杂度O(n), 第二种双指针 时间复杂度O(n)空间复杂度O(1))
场景题
100G的手机号文件,找到重复的手机号,将重复手机号放入另一个文件。PC机内存1G(按照手机前三位分成1000个文件,然后hashmap或者bitmap进行重复校验)
java基础(不分先后)
1、hashmap,hashtable, concurrenthashmap 区别,原理,线程安全
2、synchronized修饰对象,静态类的区别
3、单例模式,懒汉,饿汉,双重校验的优缺点
4、线程池:处理过程,关键参数, 拒绝策略
5、类加载机制,过程
6、jvm:垃圾收集器,每种垃圾收集器使用的垃圾收集算法,作用区域,对比,G1的实现过程
7、atomic原子类,原理
8、设计模式(简单提了一下单例,代理,装饰者、模板,工厂)
数据库
1、B+数(从排序二叉树 -> avl树 -> B树 -> B+树说了个遍,不同数据结构的对比,优缺点)
2、解释脏读
3、一个线程在10:00:00(十点0分0秒)访问数据库进行查询操作,10:00:10(10点0分十秒)返回,但是另一个线程在10:00:01对数据库同一个元素进行了修改,问返回的结果是修改前的还是修改后的
4、MVCC原理
redis
1、redis集群,主从复制
2、布隆过滤器原理
linux
使用过哪些命令
使用linux命令 找到一个数据文件中年龄排名前三的人
深度学习
1、word2vec原理(CBOW,skip-gram)(可能面试官对这部分也不太理解,没有详细问)
(可能还有一些想不起来了,毕竟快两个小时。编程题感谢面试官高抬贵手,不过依旧出了点小差错。 累。。。。。。。。。。。。。。。。。。。)