知乎 3000 多人关注!27w+ 阅读开发者进阶难题,2021 安卓开发社招面试解答之性能优化
【由于文章篇幅问题复制链接查看详细文章以及获取学习笔记链接:https://shimo.im/docs/QVGDhCjVKvQ6r6TJ】部分学习视频!
二、没编程基础
先入门 java 如果天天都有比较多的空闲时间的话,这个入门时间要在 2 周完成,如果没有的话,1 个月内完成吧,不要让拖延耽搁你的激情。
Java 基础知识
Android 基础
Kotlin 部分
计算机网络部分
算法与数据结构部分**
Flutter 部分
说说我的情况吧
**第一个学过的语言是 C,然后 C 学的很烂的情况下继续学习了 C++,为什么没有先把 C 学好再学 C++呢,因为课程设计==,我有自知之明,所以在上 C++的前一个寒假就先开始看了,然后先看了一本《易学 c++》,**虽然那本书在现在浅显至极,但当时还是感觉有点略难,我通过这本书熟练地掌握了 std::iostream!==然后基本的对象模型有了一点概念,我比较好高骛远,于是就在此时想直接通过最后一个大作业——命令行下的 RPG 游戏 彻底掌握 C++这门最难的语言!
对,你没听错,我当时想的就是这个大作业要是搞懂了,C++还不是被我各种 SM,但很不幸,虽然我一行行的把这个大作业的源码比着答案敲了一遍,但还是不懂,于是就在网上找了一个据说是清华的 java 课件开始学习,你还别说,除了当时感觉 java 里面把 function 叫做 method(方法)感觉怪怪的以外,真的在不到 3 天的时间完全弄懂了对象的概念以及对象的继承,然后差不多就开学了==(当年不懂事,整个寒假就看了这 10 多天的书),所以 java 大法好。
好,这是我人生入坑的开始,我说的寒假就是 2018 年寒假!,在接下来的学校的 C++课程中我当然如鱼得水,然后一发不可收拾,很快我就自己把那本 98 清华版的《visual c++程序设计》弄烂了,确实那本书的只是我掌握的滚瓜烂熟,然后我就深入了解 MFC,什么用 GDI 实现 AlphaBlend,MFC 的设计思想,MFC 中数据库的使用什么的,然而现在回首看来这些并没有什么卵用。然后我就天天晚上回到宿舍打开电脑写代码,但显然我很快从社区(知乎==)上得知 MFC 很烂,大家都说微软大法好!于是入了 C#的坑,然后发现生活好美好===天天真是喜欢 C#的不得了,不过有一天我成了软黑,winform 绘图闪成狗,loadlibrary 看着好蛋疼,以及用 user32.dll 时,蛋疼的语法,蛋疼的函数名字,API 参数,然后我得知,原来罪魁祸首不是 c#,是 winAPI 就长这样!
然后就在知乎大声地教唆下,入了 Qt 教,入门是看的一个外国人录得视频,英文无字幕,但是他的声音好好听,于是就学了 Qt,第一次发现各种 Layout 的自适应布局,通过掌握 QG
raphicsView 熟悉了 MVC 模型,后来还用 QGraphicsView 到了真实的项目,发现===好多坑==,坐标系统是坑,事件系统是坑,总之,欲仙欲死,不过说实话,我至今还是认为 Qt 的设计挺好的,QML 想学,但流产了,原因大概是没时间吧。
然后解除了另外两端惨绝人寰的事情,第一个是第一次做音视频的实时网络传输的时候,资料很少,一开始甚至连 Ffmpeg 都不知道,后来知道了,就入了 Ffmpeg 的坑,好多莫名奇妙的错误,都需要右键去看源码,然后音视频的编解码以及 Rtp/Rtsp 协议弄的差不多,demo 也出来的时候,为了广域网,又要入 P2P Nat 穿透的坑,但是很遗憾,没有完全成功。
还有一些其他乱七八槽的事情回来补==今天先说重点。
在今年 4 月份左右,我第一次下定决心要搞定 Android,而且我真的做到了!虽然以前断断续续看过 android,但都没屁用,这次是真的白天看书,晚上写代码。郭霖老师的《第一行代码——android》只看了 5 章,但在这五章的学习过程中,我真的入了 Android 的门了,然后那本书我再也没有打开过,当然,Android 只会画界面是远远不够的,现在的 support.design.widget 组件集让 Android 界面开发变得很轻松了,重要的是和服务器的交互,以及嵌入式本地数字信号处理,一不小心写了这么多,第一次发现自己打字这么快,哈哈~
尾声
评论里面有些同学有疑问关于如何学习 material design 控件,我的建议是去 GitHub 搜,有很多同行给的例子,这些栗子足够入门。
有朋友说要是动真格的话,需要 NDK 以及 JVM 等的知识,首现**NDK 并不是神秘的东西,**你跟着官方的步骤走一遍就知道什么回事了,无非就是一些代码格式以及原生/JAVA 内存交互,进阶一点的有原生/JAVA 线程交互,线程交互确实有点蛋疼,但平常避免用就好了,再说对于初学者来说关心 NDK 干嘛,据鄙人以前的经历,只在音视频通信和一个嵌入式信号处理(离线)的两个项目中用过,嵌入式信号处理是 JAVA->NDK->.SO->MATLAB 这样调用的我原来 MATLAB 的代码,其他的大多就用在游戏上了吧,一般的互联网公司会有人给你公司的 SO 包的。至于 JVM,该掌握的那部分,相信我,你会掌握的,不该你掌握的,有那些专门研究 JVM 的人来做,不如省省心有空看看计算机系统,编译原理。
一句话,平常多写多练,这是最基本的程序员的素质,尽量挤时间,读理论基础书籍,JVM 不是未来 30 年唯一的虚拟机,JAVA 也不一定再风靡未来 30 年工业界,其他的系统和语言也会雨后春笋冒出来,但你理论扎实会让你很快理解学会一个语言或者框架,你平常写的多会让你很快熟练的将新学的东西应用到实际中。
评论