当前位置: 首页 > 面试经验 >

[面经] 北森一面 Java实习

优质
小牛编辑
82浏览
2023-05-31

[面经] 北森一面 Java实习

更新: 过了, 二面拒了, 因为有京东OC了
1. 自由介绍
2. 优缺点
学习与专注能力较强, 缺点没说,他也没问
3. 大学遇到的困难
这个不知道怎么答,感觉我大学挺平稳的,没有什么千钧一发的时刻, 但是还是说了一下自己从"想找工作"到"开始找工作"的变化, 需不需要做一些美化之类的呢
4. 一个txt文件, 里面有很多单词, 用空格隔开, 你要怎么统计各个单词的频率
用字符串分割, 遍历, 用map来存, 做统计
5. 如果这个文件很大, 有10个G, 不能一次性读取呢
将文件分段读取
6. 你觉得性能上还有什么可以优化的
多线程并发读取, 比如开10个线程去分段读取, 第一个线程读0-1g的内容,然后第二个线程读1-2g的内容, 以此类推
7. 如果我要统计前十个频率最高的单词呢
我一开始以为是一个top k问题, 然后脱口而出用 小顶堆, 然后发现自己说错了, 又改口说 对map做遍历
8. 你为什么一开始以为这是个top k问题
我把场景混淆了, top k是在一堆数中, 得到最小或者最大的前k个数, 但是这个问题是单词频率统计问题,
9. 你觉得要怎么压缩这个文件, 他的压缩率是怎么算的
用霍夫曼树, 说了一下构建流程, 不是很详细, 然后再说了一下表示流程, 压缩率不会, 补充说了 这个文件从 一个单词,多次重复, 到 一个单词只出现一次, 然后再存储一下出现频次, 他没问我顺序问题
10. 说说你对map的理解
数组+链表/红黑树, 会扩容, jdk1.7头插法会死循环, jdk1.8改用尾插法
11. 什么时候会发生扩容
存储对象实际数量>数组长度*负载因子, 或者 数组长度还未到达64, 但是链表已经到达了默认阈值8
12. 他有什么线程安全问题, 说两个
jdk1.7会有头插法死循环问题, 只说了一个
13. 你自己测试过他的死循环问题吗? (没有)
14. Java在并发这一方面的发展历史是怎么样的
不知道, 但是回答了自己对并发的一些理解, 从单纯的重量级锁, 到 轻量级的自旋
面试总结
感觉整体沟通比较顺畅,问得问题不会太偏僻, 但是对于这种场景类的问题我只是凭借自己的想法与经验回答,很难去给出一个最优的解决方法
不足之处
1. 实践太少, 但是跟问题偏僻程度有关, 对多线程这一方面还要再训练
 类似资料: