本文共 1653 字,大约阅读时间需要 5 分钟。
经常有朋友问我:“现在学习Android开发还有前景吗?”“Android开发还有什么可以研究的?”大家对于职业的未来,都有一些迷茫和焦虑,其实我也有,为什么会这样呢?
现在互联网行业,各大公司已经从争夺用户转为争夺用户时长。而小程序、快应用的崛起,也让许多 App 的增长达到瓶颈。所有人都在说,国内移动互联网的红利期已经过去。
另外一方面,今年移动端的技术变革也确实有点慢。大前端的概念虽然说了很久也很多,但React Native、PWA的效果依然不尽人意。
这么看来,移动开发的前景不明朗,再加上竞争激烈以及技术变革放缓,我们这些开发者感到迷茫、焦虑就不难理解了。但这是不是就意味着从事移动开发是没有前途的呢?
我认为,移动开发是不局限于App开发的,比如 IOT、音视频、边缘计算、VR/AR,很多新的技术浪潮其实都可以融入到移动开发的体系里。对我们开发者来说,一定要打好基础,随时准备战斗。不论寒冬是否到来,都要把自己的技术做精做深。
偶然看到知乎的内推帖,投了个简历,下午hr姐姐call我,安排面试选在3天后,然而又要笔试阿里,所以没怎么复习。
8点起床,9点过比较紧张的去了创业园,感觉知乎氛围很好,在那等了一小会,有前台大叔给你倒水。
应该是个参加工作不久的研究僧师兄,出了一道算法题,主要考字符转int,然后分析了时间复杂度和空间复杂度,之后聊了android listView的性能优化,还问我recycalView的特点,进程通信的方式,我主要说了aidl和共享文件,广播,本来还想用java装B,还在精通java,然而师兄并没有问,说叫等一下
二面明显难度提升,而且面试管应该是组长吧,比较喜欢听吹架构,正好之前自己从web后台,客户端,硬件等方面做了一个智能家居项目,就吹了下硬件那边的逻辑,包括蓝牙,wifi的HTTP/IP协议,透传等,红外等传感器,然后web后台我说我用sevlet,因为本身客户端主要需要接口,数据库用mysql,也没问rollback(嘿嘿),然后把客户端展示给他看看,实在太丑没有美工(这不是重点),由于我的项目中有一个很重要的point就是在硬件触发时唤醒服务器后台推送,首先硬件识别后,串口读写数据到单片机,单片机写入wifi缓冲区,wifi通过HTTP透传数据到我服务器(可以用TCP和IP),服务器获取mac标识,推送至TAG(家庭ID)或者用户(Alias)
说到推送,好好吹吹实现原理。 1:pull方式,http长连接或是socket,轮询间隔设好即可,缺点及时性差 2:push方式,实时性好,方法1,google自带推送平台(网太差),方法二,xmpp协议(基于XML)。其实封装的比较好了,有个开源包叫asmark,其中有XmppConnection这个推送库,话说好多公司都是用它自己封装库,不过开源的demo只管推,没有延时推送,消息暂存功能,方式3,用三方的 算法:是2个有序数组合并问题,用2个指针每次比较能够O(n)解决问题,算法pass LruCache:先装装B,说一下我写的和google V4包有什么不同,主要是没有trimToSize方法,没有sizeof()计算内存耗费大小,我主要是重写LinkedHashMap,讲了下LinkHashMap源码,其实我也是看别人写的源码解析,(嘿嘿,毕竟年轻,多向别人学习)相信大多数从事Android开发的朋友们越来越发现,找工作越来越难了,面试的要求越来越高了
除了基础扎实的java知识,数据结构算法,设计模式还要求会底层源码,NDK技术,性能调优,还有会些小程序和跨平台,比如说flutter,以思维脑图的方式展示在下图;
点击文档前往获取面试资料与视频教程;
[外链图片转存中…(img-Fa50MYta-1609426371370)]
转载地址:http://okati.baihongyu.com/