2018年5月份,北京,在所谓的互联网寒冬里,一个普通二本的学生,在小公司工作一年后,跳槽拿到了百度的offer,月薪从9k变为17k,涨薪幅度接近100%。
2018年底,上海,一个只有高中学历的同学,通过培训加入了IT行业,刚开始他的月薪只有6k,一年后,他的月薪变为了16k,涨幅接近167%。
2019年3月,北京,一个xx科技学院毕业的的普通二本,在小公司跌跌撞撞半年后,今年年初突然开挂,成功拿到了百度、小米、网易和头条的offer,最终他选择了多金的头条,拿到了近30k的月薪。
2020年初,深圳,一个物理专业毕业的研究生,在工作短短两年后,拿到了年薪50万的offer,现在已经是高级工程师了。
像这样的例子还有很多,无法一一列举,可见,没有名校学历和耀眼的光环,照样可以进入大厂拿高薪,只是很多人没有领悟要领而已。
其实,对于学历普通也没有耀眼光环的人来说,进大厂就靠一条,那就是:技术实力。但是很多人在小厂待习惯了,总是用小厂的标准来衡量大厂的要求,屡次面试受挫,于是得出了一个结论:面试造飞机,入职拧螺丝钉。
但事实上,大厂的平台更大,用户量也更多,自然技术要求也更高,不能完全用拧螺丝钉来形容。就算大厂做的也是普通的事情,但是很多时候,大厂对稳定性、执行效率和崩溃率的极致追求,都是在小厂无法体会的。
我们知道,一件看似简单的事情,如果要做到80分,那轻而易举;如果要做到95分以上,那就非常困难了;而如果要做到99分以上,那就难如登天了。在大厂很多时候都要把事情做到95分甚至更高,这种追求极致的过程很有技术含量,大家好理解吗?
如何进入大厂,我总结下来就是:
了解我的读者都知道,我待过很多大厂,腾讯百度滴滴我都待过,而且我的技术级别还不低,好几年前我就是技术专家了,我很清楚大厂的用人标准和技术要求。
偶然看到知乎的内推帖,投了个简历,下午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所有需要学的知识点,一共8大板块:
Android学习的资料
我呢,把上面八大板块的分支都系统的做了一份学习系统的资料和视频,大概就下面这些,我就不全部写出来了,不然太长了影响大家的阅读。需要的小伙伴可以私信我【进阶】我免费分享给大家,或者直接点击下面链接领取,谢谢大家这么久以来的支持。
Android学习PDF+架构视频+面试文档+源码笔记
如果你有其他需要的话,也可以在GitHub上查看,下面的资料也会陆续上传到Github
330页PDF Android学习核心笔记(内含上面8大板块)
Android学习的系统对应视频
我希望通过我自己的学习方法来帮助大家去提升技术:
1、多看书、看源码和做项目,平时多种总结
2、不能停留在一些基本api的使用上,应该往更深层次的方向去研究,比如activity、view的内部运行机制,比如Android内存优化,比如aidl,比如JNI等,并不仅仅停留在会用,而要通过阅读源码,理解其实现原理
3、同时对架构是有一定要求的,架构是抽象的,但是设计模式是具体的,所以一定要加强下设计模式的学习
4、android的方向也很多,高级UI,移动架构师,数据结构与算法和音视频FFMpeg解码,如果你对其中一项比较感兴趣,就大胆的进阶吧!
进阶学习资料领取方式:GitHub
%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)**
希望大家多多点赞,转发,评论加关注,你们的支持就是我继续下去的动力!加油!