自我介绍
N个文件, 每个文件有序, 怎么合并成一个整体有序的文件? 时间空间复杂度是多少? (外部排序)
如何设计一个整数压缩算法? 一个整数数组, 用尽可能小的空间存放, 并且可以压缩完之后可以还原. (这个应该有专门的整数压缩算法, 但我不知道, 用之前学的霍夫曼编码构造了一下)
讲讲进程间通讯和线程间通讯的方法?
编程题,
1 | 用数组实现队列 |
1 | class Queue{ |
自我介绍
N个文件, 每个文件有序, 怎么合并成一个整体有序的文件? 时间空间复杂度是多少? (外部排序)
如何设计一个整数压缩算法? 一个整数数组, 用尽可能小的空间存放, 并且可以压缩完之后可以还原. (这个应该有专门的整数压缩算法, 但我不知道, 用之前学的霍夫曼编码构造了一下)
讲讲进程间通讯和线程间通讯的方法?
编程题,
1 | 用数组实现队列 |
1 | class Queue{ |
首先面试官竟然先自我介绍起来了, 介绍了组内的业务和技术栈
随后问了些实习的问题
给你一整年的关键词的数据, 关键词可以被视作字符串, 一天大概50亿条. 存储在100台机器上, 求top100频率最高的字符串
(我的思路是每台机器先map成关键词到频率的字符串, 然后相同的关键词shuffle到同一台机器上, 再reduce. 最后每台机器上取top100, 汇总到一台机器上是1w个最后再取整体的top100)
面试官问, 假如有一些关键词要被视为同一个关键词呢? 比如”北京鲜花”和”鲜花北京”或”土豆”和”马铃薯”这样的算一个关键词, 这样该怎么计算呢?
你刚才讲的1w个里面取前top100, 那该怎么做呢? (优先队列)
那如果存在并列的情况呢? 比如 1,2,….,99, 100, 100, 100, 101 的top100就是[1,2,....,99, 100, 100, 100]
这102个元素.(我一开始答得是排序, 但是很慢, 后来想出来了, 还是用优先队列, top100是100, 那么我记录下这个100, 再把数组中所有的100添加到top里面)
java一个进程不同线程的栈是共享的吗, 栈里面存储哪些数据?
编程题,
1 | 15分钟自己实现优先队列的push和pop方法并且实现n个里面选前k个最大 |
1 | class Heap{ |
2021.05.09 更新
不知道为什么,竟然挂了, 可能是知道我有更好的offer了, 还是有更好的人选了? 感觉答的也可以啊
首先还是自我介绍, 介绍了项目和实习
你们这个实习数据量多大? 只负责的离线计算吗? 有没有做实时计算?
说一下HashMap和Hashtable区别?
介绍下java里优先队列的实现?
说一下使用线程池的好处?
在你的项目里怎么确定的线程池的参数?
你的项目里提到爬虫, 爬取的过程中怎么避免爬取重复的URL的问题呢? 用集合来存储
如果是定时爬取的话, 怎样设置集合中URL的过期时间呢?
了解redis删除过期的key的原理吗? 不了解, 蒙了一个不知道对不对
降价通知功能中每个股票对应的list是遍历一遍来扫描的吗?
为什么订阅后只发布一次通知, 如果用户想自定义发送通知的次数和步长, 和过期时间, 你应该怎么设计? (这个太难了, 不得不说阿里的面试官水平是真的高, 几分钟的交流就已经了解我做的项目的原理了, 并且发现了不足的地方)
jvm有了解吗? 讲讲类加载的机制吧
说一下java进程的几个状态?
说一下java多线程的关键字?
说一下synchronized原理?
写个题吧
自我介绍? 项目和实习?
为什么要做这个项目, 动机是什么?
本科和硕士学过什么课程呢?
讲讲实习主要做了哪些工作, 负责什么?
你实习写的这个监控是高可用的吗? (就一台服务器哪来的高可用, 垃圾netease)
实习的时候有mentor吗, mentor主要负责什么?
学过编译原理吗? 讲一下源代码到可执行文件的一些过程?
讲一下编译原理里面的优化? (本地相关优化, 本地无关优化)
学过汇编语言吗? 讲一下函数调用的时候栈帧是怎么变化的? (这我之前看过, 看懂过, 但是很难, 而且很快就忘了)
函数参数压栈的时候是从左到右还是从右到左? (应该是从右到左, 我答错了呜呜呜)
没自我介绍, 感觉这个面试官不太和蔼的样子, 非常严肃, 上来就直接问
volatile关键字讲一下
threadlocal讲一下, 里面的hashmap对应的key应该是线程对象而不是线程的id
说一下垃圾回收算法(标记算法和引用计数算法)
说一下引用计数算法, 这里一开始没明白面试官的意思, 后来才知道问的是三色标记算法.
说一下CMS收集器的四个过程.
说一下JVM锁膨胀的过程? 无锁, 偏向锁, 轻量级锁, 重量级锁
说一下java里面的四种引用, 分别有什么作用? 我只知道弱引用在WeakHashMap里有点用.
问了个jvm的题
自我介绍
平常开发过程中使用什么语言?
为什么选择java作为自己的开发语言?
说说java和c++的区别?
你刚才提到了c++的智能指针, 说一说智能指针的作用?
平常都使用什么数据库呢?
为什么使用MySQL?
你刚才说到Maria DB是仿照的MySQL? 那么这样做会产生产权问题吗?
Maria DB和MySQL有什么不一样的地方呢?
1 | 面试也是半小时就结束了,很快 |
b = value_b and a = value_a
这样可以走联合索引吗? (之前没考虑过这个问题, 但是肯定能啊, 假如这点都做不到也太不智能了吧)1 自我介绍
2 问实习能实习多久
3 mysql b+树和b树区别, 你刚才说了b+树的优势, b树就没有优势吗?
4 说说spark的架构和任务提交的流程.
5 TCP是怎样实现可靠性的? 除了超时重传还有哪些机制?
6 做个编程题吧