阿里java开发一面凉经

我研究生方向主要是云计算,主要用了java、spark、Hadoop、linux。但是没看清楚,内推了朋友的java开发。阿里云从此分道扬镳= =、
面试官先问了我java用了多久,然后就问了几个简单的问题
1、无序数组,将数据处理成无重复,有序状态,需要什么数据结构
2、Set、Map、List适用场景
3、如何实现一个线程安全的List
后面这几个锁的问题,平时没用过真的不会啊。答得不好。
4、synchronized如何使用
5、加锁的静态方法和普通方法区别
6、有没有用过TreadLocal
7、GC回收年轻代和老年代都用了什么算法,什么垃圾收集器
后面是数据库的问题,我说我研究生没用过。。但还是问了几个
8、mysql查询加行锁怎么写
下面几个问题背过,答出来了
9、数据库事务的隔离级别
10、可重复读解决了什么问题
11、什么是幻读,举个例子
12、聚类索引和非聚类索引的区别,
下面这题没答出来
13、查询表中最后的一条记录,那个索引更快?为什么?
14、设计模式有用过吗?没有。。。。。
15、linux常用命令用过吗?用过,问了如何找出一个日志中,某个关键字出现的次数。
因为写过shell脚本,所以这个答出来了
最后是一个算法。有一个稀疏无序数组,其中有两个数字只出现了一次,其他数字成对出现,问什么样的简单数据结构能找出这两个数。
我刚开始没想法,然后要面试官提示一下,面试官提示只有一个单独出现的数。
这个有想法,直接异或,最后剩的就是单独出现的数。但还是没想出来怎么求两个。直接遍历的话时间复杂度肯定达不到要求。
结束后看了下博客,才想到:
思路:
* 1、两个相同的数字做异或操作,结果是0
* 2、数组中所有的数字做异或操作,最后的结果必然不为0
* 3、找出结果中二进制位中最后一个为1的二进制位n
* 4、按照二进制位n是否为1分类数组为两份,则1个数字在第一组,两一个必在第二组,且两组中其他的也都是出现了两次的数字
* 5、分类后分别进行异或操作


#阿里巴巴##面经##Java工程师##校招#
全部评论
遍历一边异或出结果,找到这个结果二进制1的最后一位,再次遍历将数组分成两组,一组是这一位是0的 一组是这一位是1的 两组分别异或 两个异或结果就是两个数
点赞 回复
分享
发布于 2019-09-10 13:45
好像是剑指offer的原题吧 https://www.nowcoder.com/questionTerminal/e02fdb54d7524710a7d664d082bb7811?f=discussion
点赞 回复
分享
发布于 2019-09-10 13:45
阅文集团
校招火热招聘中
官网直投

相关推荐

1 34 评论
分享
牛客网
牛客企业服务