兴业数金java开发一面
笔试:选择题做的好烦,编程题是从一串字符串中找出不想同的字串,用的滑动窗口,挺简单的
一面:由于最近在改论文,把一面时间推到了3月3号,晚上6:40开始面试,从实验室跑回宿舍
面试情型:3个面试官,由于我这边网络不好,他们等了大约4min,开一下摄像头后就关了,全程一个面试官面试
面试问题: 1、说下常用的数据容器
还以为问的数据结构,后来说下了主要就是collection、map接口下的几个,分别说了下那些是线程安全的、和不安全的
2、问了下currentHashMap
具体忘了,就说了下segment分段锁、CAS、以及扩容位与length-1实现到数组长度的映射、还有68红黑树
3、问了下CAS
回答了乐观锁、现场口述了下写了个CAS例子,接着问了ABA问题和解决方法(2,版本号、用过就丢)
4、问了下sychronized的锁升级过程
偏向锁忘了原理了,其他的轻量级锁->重量级锁举了形成的例子,就是重入锁state++和另一个线程来继续加锁
5、问了下volitale
回答了重排序和内存屏障,讲了下JMM和刷新到主存,并口述了需要结合CAS使用,保证B.CAS(pre,next)获取的为最新的值
6、线程池
参数,由于当时模仿手写过线程池、就直接说了,然后问了拒绝策略,自己说了下,第一个抛exception(阻塞队列满了)、放下当前线程去进行该线程,还有一个忘了,顺便提了下消息队列,看过别人搭建集群,也说了下mapreduce的过程
7、项目一些问题
用了缓存,当时就是用来保存用户角色避免频繁加载的,所以对于系统性能提升不大,然后问如何提升,我说大数据量需要redis集群,顺便讲了学习过一点spark,还有就是权限管理了,调表问我了解吗,不知道,但是用redis每深究,据问了下redis的数据结构,说了感觉数据结构都差不多,自己学过java和python的数据结构,也回答了redis的数据类型
8、问了happens-before
面试官发音好像不标准,后来说这个,来了句可见性,直接说了
9、问了下类加载机制
我说具体不记得了,不过写过博客,回答了一些过程和双亲委派模型及其优点
10、垃圾回收
问了虚拟机栈中的东西,我记不起来了,回答了几个,然后问了垃圾回收机制和内存分配包括分代,分代记不起来,只说了eden,说了下指针碰撞和空闲列表,讲了下c1回收算法,以前学及其学习的,类比了继承学习,不过是不同样的region同种算法计算最大收益
11、还有一些想不起来了,感觉就跳表不太了解,其他的都回答了下
最后说了上海和成都还有岗位,问了下意愿,最后还问了下有几个offer
感觉就这些了,其实java并发编程虽然没实践,不过学的没有忘记,其他的就没问了
其他面试官没说啥,也不知道过没过