Android程序媛:文科转码,记录我在字节跳动这一年,idea搭建android开发环境

第一天上班的时候,我感到非常新奇和不可思议,我竟然真的成为了一名Android程序员,坐在工位上写代码都在窃喜。

Android程序媛:文科转码,记录我在字节跳动这一年,idea搭建android开发环境_第1张图片

与字节结缘


2020 年上半年的时候,刚复工没多久,我又一次选择了裸辞。或许出于对自己非科班出身的介怀,又或许只是想踏踏实实接受比较系统的计算机相关知识的学习,前一年的时候我就又一次萌生了考计算机研的想法,把操作系统、计算机网络、数据结构、计算机组成原理四件套都恶补了个遍。总之我又想脱产学习了。

4 月中旬的时候,我又成为了一名光荣的无业游民。当时告诉自己,冲一波大厂,不行的话就去考研,我甚至抽空还回学校看了一下房子,等这边房子到期就搬到学校里天天泡馆。

(当时在学校看房的时候,临近黄昏,觉得这种处在人生转折点的迷茫感受很奇妙,于是随手拍了一张)

Android程序媛:文科转码,记录我在字节跳动这一年,idea搭建android开发环境_第2张图片

后来收到了字节的面试邀请,结局你们也知道,我通过了面试,拿到了 offer,导致那一年的考研大军直接少掉了一名强有力的竞争者(bushi)。

字节的面试效率很高,不过我为了提高把握,每次约下一轮面试时间的时候都给自己预留了很长时间,然后在这段时间里疯狂学习。还有一个小窍门就是,及时总结输出学习成果,我当时把自己的学习成果总结成了许多知识点上传到了Github。(需要参阅的朋友,我待会把Github放在文章下方);

这里附上我当时总结的一些知识吧:

大概部分如下:

  • **Java基础:**JVM、String、内部类、多态、抽象和接口、集合框架(Hashmap、Arraylist)、单例、线程、Synchronized、Look锁、动态代理、引用

  • **Android基础:**四大组件、View、进程、Bitmap、屏幕适配、消息机制、线程异步、WebView。

  • **Android扩展:**Framework、AMS/PMS/WMS、Binder源码、Handler源码、ART、Apk优化、Hook、Proguard、架构(MVC/MVP/MVVM)、Jetpack、NDK开发、Rxjava、

  • **Android源码:**Leakcanary、Eventbus

  • **设计模式:**面向对象六大原则、工厂模式、单例模式、建造者模式、观察者模式、适配器模式、策略模式、代理模式。


数据结构与算法:

  • 线性链表

  • 查找:顺序查找、二分查找

  • 排序:交换类、插入类、选择类

  • 树、二叉树、图:深度优先(DFS)、广度优先(BFS)

  • 递归

  • 分治

  • 滑窗

  • 三大牛逼算法:回溯、贪心、动态规划(DP)

**PDF格式版:**想对未来的自己说

Android程序媛:文科转码,记录我在字节跳动这一年,idea搭建android开发环境_第3张图片

Android程序媛:文科转码,记录我在字节跳动这一年,idea搭建android开发环境_第4张图片

实际上这些知识基本上工作几年的大部分Android开发者都能达到的水平,因此面试的时候只需要沉着冷静的思考,从源码的角度对面试官抛出来问题进行分析,就能比较轻松的解决。

技术参考版


《Android高级提升手册》内容完整版我已经上传到 Github里面, 点击下方的推荐阅读即可进入;

推荐阅读:2021年Android程序员春招面试题收藏整理笔记+知识点整理(获取通道);

Android程序媛:文科转码,记录我在字节跳动这一年,idea搭建android开发环境_第5张图片

尾声

评论里面有些同学有疑问关于如何学习material design控件,我的建议是去GitHub搜,有很多同行给的例子,这些栗子足够入门。

有朋友说要是动真格的话,需要NDK以及JVM等的知识,首现**NDK并不是神秘的东西,**你跟着官方的步骤走一遍就知道什么回事了,无非就是一些代码格式以及原生/JAVA内存交互,进阶一点的有原生/JAVA线程交互,线程交互确实有点蛋疼,但平常避免用就好了,再说对于初学者来说关心NDK干嘛,据鄙人以前的经历,只在音视频通信和一个嵌入式信号处理(离线)的两个项目中用过,嵌入式信号处理是JAVA->NDK->.SO->MATLAB这样调用的我原来MATLAB的代码,其他的大多就用在游戏上了吧,一般的互联网公司会有人给你公司的SO包的。
至于JVM,该掌握的那部分,相信我,你会掌握的,不该你掌握的,有那些专门研究JVM的人来做,不如省省心有空看看计算机系统,编译原理。

一句话,平常多写多练,这是最基本的程序员的素质,尽量挤时间,读理论基础书籍,JVM不是未来30年唯一的虚拟机,JAVA也不一定再风靡未来30年工业界,其他的系统和语言也会雨后春笋冒出来,但你理论扎实会让你很快理解学会一个语言或者框架,你平常写的多会让你很快熟练的将新学的东西应用到实际中。
初学者,一句话,多练。

由于文章篇幅问题复制链接查看详细文章以及获取学习笔记链接:前往我的GitHub

你可能感兴趣的:(程序员,架构,移动开发,android)