2019年年初的时候我就开始偷偷投简历了。由于在如今的从事的即时通信企业作的不开心了,客户产品善变,公司开会贼多。固然最关键的仍是工资没给到位,事情都作了,却TMD不给升职加薪,所以内心窝火,也为了再次向社会证实个人价值和能力。web
移动互联网的普及和智能终端设备的普遍应用,短视频、直播、在线教学1V1等各种形式的实时音视频通讯模式风靡大众,成为人们平常沟通的新模式。面试
已经造成南抖音北快手格局。音视频火热兴起,所以我把目光也瞄准了这两个企业。算法
面试快手 初尝失败滋味数据库
自我介绍 + 项目api
解释一下 JNI 中全局引用和局部引用的区别和使用数组
Linux几个经常使用的跟进程和线程有关的命令(具体的也记不清了)缓存
怎么定位 NDK 中的问题和错误网络
http请求过程,http和https的区别数据结构
七层和四层分别是啥,TCP和UDP特色和使用场景架构
DNS存在的意义(当时感受有点懵,直接说了忘了,后来看了一下贼简单,悔恨+++++++)
线程和进程的区别,特色
死锁
进程间通讯方式
指针和引用的区别
指针常量和常量指针的区别
多态(balabala一大堆),继承和封装的特色和区别
建立一个进程操做系统内部都干了啥
进程pid怎么作到惟一标识的(不会)
根进程有哪些(开始这三个问题答得都很差,心都凉了,感受他想刷掉我了,而后开始写代码)
第一个:孪生素数(三种解决思路吧,当时第一种可能效率不是最优的,说了第二种,面试官:还有什么提升效率的,我:???有点没看出来 ,最后他给我说了一个小点,舍去重复计算的一行代码)
第二个:场景题。(面试官:我看你参加了几回说学建模,说一个场景,你以为他像什么模型。我:像多级缓存器吧。面试官:方向是对的,不过你说的是***,可是这道题是一个buffer。大概讲了一下buffer的使用)大概就是地铁早高峰通常会加一个屏障类的东西,问最大人流量之类的,考虑的因素比较多,可是难度还能够,大概模拟了一下,写了一个简单的代码,主要是为了标明思路。
第三个:棋盘从左上到右下的走法(比较常见),说的是递归的方式,不过我最后写仍是用dp写的,主要也是比较怂,惧怕递归的边界条件出错。
线程死锁,发生的状况(记不清了,就大概说了两种场景)
从键盘输入一个字符到显示在屏幕上发生了啥(说了一下大概,没细说)
直接说前面的代码写的还不错,算法应该还能够,那就再写几个吧。我:。。。我尽力写吧
第一个:二叉树前序遍历的同时输出深度(不能用递归),我分开写的前序遍历和深度,他就说效率有点低吧,我:深度的话平时用递归比较多,不用递归的话暂时就能考虑折磨多了。面试官人很nice,说了一个小点
第二个:手动实现strlen,代码挺简单地,四行就行。可是问到一个很难形容的点。面试官:64位下,假设字符长度为8,实际操做过程当中是把这8位从64位中剪出来处理以后又放回64位中,怎么才能手动提升效率,就是去掉剪裁的过程。这个感受面的时候很懵逼,题目甚至理解错了,最后说了一个思路,但可能效率不过高,第二种思路是错的。
第三个:问了说指针访问内存越界,系统或者说编译器是怎么判断它出现越界的,访问状况啥的
这个大概说了一下,感受通常不多去编译器的角度看一些细节,说的浅一点是对的,深一点的话,我给他测试了一下,说了想法,感受没什么问题,可是可能一些细节仍是不太对,这个可能还要在研究一下(本人比较菜,没办法)
第四个:逻辑题:地球(正球体)上某一个点,向北100m,向东100m,向南100m。走完这三步,回到了原点,这个原点的位置在哪。 说了一个,问还有那个点,当时想不到了,如今发现这个点还挺多的(就感受面试的时候脑子被吃了)
第五个:一个整型数组,每个元素造成的值类比到柱状图上,最大蓄水量
大概说了思路,考虑的几种状况,跟本身作过的某一类数学题的思路有类似之处,两个题考虑的状况有什么不一样(面试官:思路是正确的,可是应该不是最优的。我:的确不是最优的,可是多是我如今想的太复杂了,我只是以为考虑的状况可能会不少,暂时的话没有想到更好的)
最后,还有什么问题问我
经历过,失败了,固然会彷徨失落,生活终归要继续前进,说好的证实本身呢?如今岂不是让别人看笑话,能力不行,想拿高薪?呵呵…
工做了几年 ,多少也养成了良好的工做习惯,先查找问题是什么、再分析问题的可能影响因素,接着寻求对应的解决方案,最后按照影响关联因子最大的解决方案按计划去执行好了。
刷题我从常见Android基础知识面试题,刷到了Java面试题,继而攻坚Android高级面试题,以及突破学习Flutter相关热点技术面试题(不是很难),最后总攻近期大厂面试真题总结。这份面试题精编含答案解析我已经整理到了一份PDF文档里,共370页。
下载地址
愈来愈多的大企业如今面试都开始关注底层框架源码、原理分析。多年的CV经验,对于理解和分析源码始终停留在肤浅的层面。没有真正意义上去注重源码分析。
如今网上博客资源水平良莠不齐,源码原理分析不够全面,所以我特地购买了和搜集了一些源码和原理的视频教程。
下载地址
这套源码分析教程主要包括:
Okhttp网络库深刻解析和相关面试题分析
Retrofit网络库深刻解析和相关面试题分析
LeakCanary内存泄漏框架解析和相关面试题分析
butterknife依赖注入框架源码解析
blockcanary UI卡顿优化框架源码解析
…
自我介绍,大概就是说些简历上没有的亮点还有跳槽缘由等,从各个方面彰显本身优点和技术
手写代码 (1)计算View树上全部view的数量 (2)参数ViewGroup (3)补全空方法返回view数量(就是数据结构多叉树递归层序遍历+Android View基本api调用)
主线程Looper一直循环查消息为什么没卡主线程?
RecyclerView相对ListView区别?
好像还有Bitmap resize相关,就是设置option,而后decode等等等等吧
用MultiDex解决何事?
其根本缘由在于?
Dex如何优化?
主Dex放哪些东西?
主Dex和其余Dex调用、关联
Odex优化点在于啥?
Dalvik和Art虚拟机区别?
多渠道打包如何实现(Flavor、Dimension应用)?
从母包生出渠道包实现方法?渠道标识替换原理?
Android打包哪些类型文件不能混淆?
Retrofit主要实现机制?
动态***静态***区别?
思惟、架构:模块化怎么作的?怎么设计的? 19.接口发现暴露怎么作? 基于什么思想?
MVC、MVP、MVVM应用和彼此本质区别?
Glide缓存特色?
你擅长Android中哪一个方向呢?这问题我实际上是按Android UI动画方面和移动端后台交互方案制定来预想过的,然鹅说完他挑了Android UI,幸亏我有准备。
你看我这手机上这个launcher里应用抽屉(就是不少ROM都有的把不少APP管理归类的二级菜单功能)他在这ROM前一版是有个毛玻璃效果背景的,从系统ROM角度说下怎么作吧? UI相关的两个大问题:实时的水面倒影效果怎么作?这里面实时更新的UI性能如何保证?(我也没作过,估计面试官也知道,全部就说了一下思路啥的,最后也承认了个人思路策略以及知识迁移解决问题能力吧)
偏UI基础的考察:Measure、Layout、draw大流程、绘制顺序,基于这些说下TagLayout(FlowLayout)怎么写?
算法题:俩线程分别持续打印奇数和偶数,实现俩线程的交替打印(从小到大)
设计个IM客户端以及数据库架构,架构每一层都是啥,互相怎么交互工做?
感谢你们能耐着性子,看完我啰哩啰嗦的面通过程,以上仅是我的的观点。但要记住的是,学习是不能落下的,由于时代在进步,技术在更新,只有更新了本身的知识库,才不会被行业所淘汰。
以上所整理的学习文档都可以分享给你们,共勉!
直接点击我免费获取哦!
分享不易 喜欢本文的别忘了关注+点赞喔