Android开发三年月薪才12K,算法题 JVM

### 第二层 面试官对我的偷鸡取巧并不满意啊,他需要我提速,这个速度不行啊。 What??是有时间复杂度更低的吗?不不不,这是一道核心竟然是一道多线程的题目。 1. 将10亿的数据分片,通过分治的思维对数据进行第一次处理。 2. 开启多线程然后对其进行这些分片的数据进行优先级队列操作。 3. 然后每个子线程筛选出其中最大的k个数 4. 当所有线程执行完毕之后合并数据 ### 我猜测的第三层 1. 是不是考虑下多少个数据一分片,然后如何把效能提升到最高的问题? 2. 构建多少个线程读取效率是最高的? 这个都是我没想到的,各位大佬有想法的可以聊一下啊。 # 题二:一篇文章内的单词数量 这题乍一看卧槽貌似不难,foreach循环碰到一个空格或者标点的情况下sum++,是不是就可以解决这个问题。 然而事情并没有想想的这么简单。面试被问到这种问题最难的是什么,可能是对于这题目真实的边界问题的思考。 1. 如果这篇文章内容很大怎么办,会不会把内存吃光? 2. 如何给单词去除重复? ### 是不是可以考虑逐行读取呢? 将其转化成IO流,逐行读取流,之后对这个输入内容进行一次计数操作,是不是就可以解决这个问题呢。 ### 单词重复的问题 卧槽,这个真简单HashSet啊!!!!那么如果海量数据我是不是又炸了? 卧槽,死亡螺旋吗。或许我们可以考虑下用hash的方式来解决,只保留单词的hashcode,是不是可能可以解决呢。 ### 同样的这个也可以使用多线程分片去优化 方式的话基本也和上面是完全一样的,只要把数据分片,之后多线程调度,然后合并结果就可以了。 ## 总结 **【Android 详细知识点思维脑图(技能树)】** > ![](http://www.icode9.com/i/li/?n=2&i=images/20210711/1626012635933431.jpg) 我个人是做Android开发,已经有十来年了,目前在某创业公司任职CTO兼系统架构师。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,**现在高级工程师还是比较缺少的**,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。 > 这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。 由于篇幅有限,这里以图片的形式给大家展示一小部分。 >![](http://www.icode9.com/i/li/?n=2&i=images/20210711/1626012635359002.jpg) 详细整理在GitHub可以见; **[Android架构视频+BAT面试专题PDF+学习笔记](https://github.com/a120464/Android-P7/blob/master/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)** 网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。 最后,赠与大家一句话,共勉!
上一篇:拼多多+携程+蚂蚁金服技术面集合,看完我工资从12K变成了20K


下一篇:机械工程转行学Java半年,拿下12K的offer,血泪总结