前言
19年6月份从网易云音乐离开,放弃了留学机会,开始了人生的第一次创业,前后尝试了两个项目,因为个人能力与时机因素都失败了,虽然没能享受到创业所能够带来高杠杆物质上的回报,但是对个人软技能和自我边界认知上都有了很大的提升,对于这段经历有以下四点想送给准备创业和走在创业路上的朋友们。
- 创业本质是一个不断降低商业模式风险的过程。(创业前最好去北京798的智能硬件展厅看一看)
- 当你对于自己的未来感到模糊,对当下感到厌倦的时候,跳出舒适圈,快速尝试是最好的解决方案。
- 打开自己,多结识各路“牛鬼蛇神”,你当下的困惑大多都有人比你提前经历过,且都可以给予你具体可操的解决方案。
- 忌纸上谈兵,实际去做的质感是书本上永远学习不到的,去干而不是去看。
经过这一次创业和之前的工作经历,对于下一份的工作在选择上所以也有了更多的想法,对于工作的成长性和平台背景是当下比较看重的,当然钱也是考核的一个重要指标(一切以成长和主人翁精神来鼓励加班不给钱的公司都是PUA)。结合自身的职业发展诉求,快手和字节跳动是本次找工作的目标公司。这两家公司的offer也是首先拿到的,因为offer的流程有些时间,因此也面试了一些其它的公司,感受到了各家公司的工作流程,面试过程中面试官也给予了很多技术成长上的建议,对于一些技术和设计问题也展开了一些探讨。一些面试官分享了他们在做的业务,商业模式等,总之在职业素养,技术视野,商业模式上都在潜移默化中得到一些提升。
阿里巴巴面试整理
- 线程原理
- 垃圾回收机制的实现
- Https原理
- Handler实现线程通信
- Glide对Bitmap的缓存与源码复用如何做到
- 给你一个Demo如何快速定位ANR
- 对Dalvik虚拟机的认识
- Android虚拟机Dalvik与ART区别
- 进程保活如何做到,保活率有多高
- Binder通信原理与机制
- Handler中有loop死循环,为什么没有阻塞主线程,原理是什么
- AMS在Android的作用是什么,Activity启动跟AMS有什么关系
- PMS了解过吗?怎么看?聊聊PMS详细实现流程
腾讯面试整理
- 热修复
- 增量升级
- 设计一个多用户、多角色的APP架构
- Volatile关键字与synchronized关键字在内存的区别
- synchronized关键字在虚拟机执行原理,什么是内存可见性,锁升级
- ButterKnife为什么执行效率别其他诸多框架高,原理是什么
- Linux自带多种进程通信方式,为什么Android都没采用而偏偏使用* Binder通信
- Binder原理和实现一次拷贝的流程
- 类比于微信,如何对APK进行极限压缩,谈下Android压缩几大步骤
- 如何彻底防止反编译,.dex加密怎么做
- AOP与OOP的区别,原理
- 序列化与反序列化的原理,Android的Parcelable与Serializable的区别
- 手机QQ换肤实现和原理
字节跳动面试整理
- 如何实现直播效果
- 抖音直播中网速比较差的情况下,如何使画面保证流畅
- 音视频同步原理,音视频能绝对同步吗
- 硬编码和软编码区别,录屏时如何选取硬编和软编
- 有做过直播特效吗,说说原理和难点
- include、merge、ViewStub的作用和原理
- OpenCV中定位人脸的五个点怎么做到
- 为什么RecyclerView加载首屏会慢一些
- View绘制机制,onMeasure、onLayout、onDraw方法的调用机制
- 为什么Android会出现卡顿
- ThreadLocal底层原理和Handler的关系
- Flutter为什么会做到处处运行,与RN的区别
- Flutter的图形引擎和Android的渲染引擎原理
- sync关键字和lock的区别,他们对线程的控制原理
架构方面整理
- EventBus、AOP面向切面编程原理、饿了么Hermes跨进程架构原理、Message、QQ换肤、阿里ARouter、RxJava
NDK方面整理
- 指针、MakeFile编译so库、阿里andfix热修复原理、编译FFmpeg集成到AS中
算法方面整理
- Hash值、HashMap、最小生成树算法、KMP算法、查找算法、排序算法
UI方面整理
- BAT屏幕适配、刘海屏开发和适配、UI绘制流程和原理、事件传递机制
作者2013年从java开发,转做Android开发,在小厂待过,也去过华为,OPPO等大厂待过,18年四月份进了阿里一直到现在。
参与过不少面试,也当面试官 面试过很多人。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长,而且极易碰到天花板技术停滞不前!
我整理了一份阿里P7级别的最系统的Android开发主流技术,特别适合有3-5年以上经验的小伙伴深入学习提升。
主要包括阿里,以及字节跳动,腾讯,华为,小米,等一线互联网公司主流架构技术。如果你想深入系统学习Android开发,成为一名合格的高级工程师,可以收藏一下这些Android进阶技术选型
我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。
Java语言与原理;
大厂,小厂。Android面试先看你熟不熟悉Java语言
高级UI与自定义view;
自定义view,Android开发的基本功。
性能调优;
数据结构算法,设计模式。都是这里面的关键基础和重点需要熟练的。
NDK开发;
未来的方向,高薪必会。
前沿技术;
组件化,热升级,热修复,框架设计
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
我在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多,GitHub可见;《Android架构视频+学习笔记》
当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。
8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**
当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。
不出半年,你就能看出变化!