前言
2020年,互联网裁员潮下,我度过了人生中最清晰的半年。
今年我本命年,熬过了程序员35的坎,却在36岁被公司破产来了当头一棒,领完了当月份的工资,老板,也是我哥们的老李走进我的办公室,没有迂回地通知我,公司倒了。
老李陷进沙发里,用手抹了把脸,看上去很疲惫。
三年前公司还在装修的时候,我过来搭把手看一看,老李叉着腰指着同一套沙发,意气风发的说:“哥们专门给你配的,这小沙发花了我两万,咱们以后光明未来的起点就在这儿了!”
不过三年,创业失败,我们又要找新的起点。
第二层
面试官对我的偷鸡取巧并不满意啊,他需要我提速,这个速度不行啊。
What??是有时间复杂度更低的吗?不不不,这是一道核心竟然是一道多线程的题目。
- 将10亿的数据分片,通过分治的思维对数据进行第一次处理。
- 开启多线程然后对其进行这些分片的数据进行优先级队列操作。
- 然后每个子线程筛选出其中最大的k个数
- 当所有线程执行完毕之后合并数据
我猜测的第三层
- 是不是考虑下多少个数据一分片,然后如何把效能提升到最高的问题?
- 构建多少个线程读取效率是最高的?
这个都是我没想到的,各位大佬有想法的可以聊一下啊。
题二:一篇文章内的单词数量
这题乍一看卧槽貌似不难,foreach循环碰到一个空格或者标点的情况下sum++,是不是就可以解决这个问题。
然而事情并没有想想的这么简单。面试被问到这种问题最难的是什么,可能是对于这题目真实的边界问题的思考。
- 如果这篇文章内容很大怎么办,会不会把内存吃光?
- 如何给单词去除重复?
是不是可以考虑逐行读取呢?
将其转化成IO流,逐行读取流,之后对这个输入内容进行一次计数操作,是不是就可以解决这个问题呢。
单词重复的问题
卧槽,这个真简单HashSet啊!!!!那么如果海量数据我是不是又炸了?
卧槽,死亡螺旋吗。或许我们可以考虑下用hash的方式来解决,只保留单词的hashcode,是不是可能可以解决呢。
同样的这个也可以使用多线程分片去优化
方式的话基本也和上面是完全一样的,只要把数据分片,之后多线程调度,然后合并结果就可以了。
最后
其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
下图是我进阶学习所积累的历年腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节
以上【历年大厂高级工程师面试题集】、【Android高级进阶教学视频】、【Android高级知识点学习PDF】皆无偿分享给大家。如有需要,点击**【Android架构视频+BATJ面试专题PDF+学习笔记】**即可免费获取。
专题PDF+学习笔记】](https://docs.qq.com/doc/DSkNLaERkbnFoS0ZF)**即可免费获取。
整理不易,望各位看官老爷点个关注转发,谢谢!祝大家都能得到自己心仪工作。