【技术漫谈】Android高手进阶,2024年Android开发者常见面试题

那所以说,为什么我不想去讲一些高级的一些语言,其实高级的语言都是API的一些堆积。包括现在我所看到的一些课程,大部分的东西都是这样。这个是不对的,这也是违反我们的一些学习的一个思路,或者是学习的一个大的一个这个趋势,或者说那个背景。

所以说,这是我今天晚上给大家分享的第二个点,希望大家能在学习的过程中。能有所收获,有所得拿不是说你每天学习,每天学,每天写代码。每天看书,也看了很多书,但是一年下来以后还是感觉自我提升不大,还是觉得没什么用的,这个这个状态不对

我在再回到C语言的问题上。我们接下来将在下个月初,给大家带来的C和C系列整体的一种实战和C++拔高的理论课。那么这个课我们会有很多的书籍。当然这是我的学习方式啊,那么你如果说确定跟我去学了,一定要去遵从我们这种学习方式,那么我去带着你去做,我们这里有很多经典书籍啊,有些书籍,基本上十本书我又看过,会给大家精选几本书,我们这说呢,作为我们的一个教材。

第一个本书,我们是讲的这个《C和指针》,这本书,希望大家能够买一本。

第二本书,是这个C语言的核心讲义,我稍后会把这个链接发给大家,我们会给大家选取两本书,加上去看。那么但是整个的一些课程的编排,我们采取了将近十本书的一个混编的整个过程,这次我接下来想做的一件事情,就是说。如何的让你去在。一定的时间内去高校的,去组织自己的学习能力,提升自己的学习,实战的这种。那么你任何的学习一定要是有一些知识的讲解和引领,包括经验上的传递,也需要有一个作业的安排,所以说我们会有采取对应书籍上面的作业给大家去讲解。

你会发现有两种很不同的现象啊,具体的一些课程内容,大纲已经出炉了,应该会在,下周六啊,会给大家去出来,因为我这里今天晚上我简单去讲一讲,那么随着一些最核心的一些语法是什么,去,从本质去,你理解我们的一个常量变量,我们的标记,我们说这个标记符对不对,那么我们会去讲一些运算符,比如说我们这个。异或,移位,我们会去从内存去拿出他的经项目来看一看啊,不同的这样一个编辑器,GCC也好,或者是VisualStudio。

我们还有一些其他的编辑器,对这样一个内存的划分,这样的一个内存模型,怎样去动态的创内存。实际上语言的本质是什么,就是一些关键词,操作符,比如说external,Static,比如讲这个变量的一些生命周期,我们讲的他那个堆栈空间,一个函数,它应该是在哪里,那如果说这个函数里面有一些变量,我们给他某些关键字进行修饰以后,它又是怎么去变化,然后我们会去讲C的工程上的模块开发,我们这个模块化跟谁讲是一样的,你去看看怎样模块化的开发,那么第二点是结合Linux里面的内核。我们去看什么是规范化的开发。

我想说的是,你在学习的过程当中,因为你是跟我去学,你画的时间。那么我希望你能有所得啊,不是说你是我来浪费你的时间,所以我一定是把我的十多年的学习的思路跟经验带给你,这个思路和经验不一定适合你,但是可以证明的是,这个学习思路和经验在我身上已经发生了一个比较好的一个验证,包括我现在周边那些大牛,方便也是这样去学习的,我也跟很多人探讨过学习的一些东西,包括跟我的侄子。我今天高二,但是应该不出意外,他应该也是四大高校当中的一个预选队员的,我也是去看他如何去做一些…他的英语词汇量1万多了,现在。

这样的学习一定是有学习方式的。但是用科学的记忆也好啊,学习策略一定是有效的方式,这个东西,我觉得花时间和精力去研究,比你在家里看个视频,写一个Demo更有意义。

那么我们再去想啊,那么C,我们还有混合的一些结构体,在Java里面说的对是象,那我们说。这种structure对吧,因为。那么这些结构体跟普通的基本类型,我们要指定请结合的指针到底是什么,比如我们智能指针PTR,二级,三级的指针,对吧,多级指针。那么指针跟数组有关联以后怎么办,Char类型的指针,那么数组跟指针到底有什么关系,其实讲来讲去一定要去感悟他,当然一些。很本质的东西呢,我可以可以通过大概10课的时间,我告诉你,这是经验的传承,但是你必须要花时间去领悟。比如说今天晚上,比如说你现在在家里面,你是不是好好的去看了一些书籍,然后不断的回炉,不断的提炼。

当然你会发现,我们学了很多基础的一些语法,一些规则,如果说你把这些东西给拿下来,那我觉得写一个简单的一些代码,就没有问题了,那么怎么样在已有的代码上做一些优化,提到优化就不得不提数据结构和算法,实际上。还有各种专业性的算法,当然我们不一定会在很短的时间内研究的透,我们数据结构一定是不能放那些东西。那么我也会采取用C,C++的形式给大家去展示常用的数据结构,我们要去写。那么链表,那举个例子嘛,比如说我们这个区啊,里面会带有一个私家车,我们训练表的时候会有一个Load的,对吧,你能听懂我讲的意思。那么如果说你的Load没有load*,那么你就会发现你的程序是报错,那这时候怎么办,我们往往凭经验写一个它的 define,那么他的define跟# define这种预指令有什么区别,这东西就是我所讲的一个道与术的问题,这东西要去思考去背的,你要去理解他,需要去去深刻的记忆。其实这也是学习的技巧,你从有知到无知的一个推论,一定是这样子,有的时候是需要逼自己一把的。

你学到了这个阶段,我相信你对基本的语法应该OK了,那么接下来怎么办,就是一个练习,很多人会发现,很多时候找不到任何的练习,更不知道如何去成长,如果是这样的状况,那么我会告诉我会告诉你一个什么点,你要学会去看一些。开源那些项目,我看那些项目,如果说你是纯粹的去为了学习C语言来应付Android的工作,那么最好的项目就是你用纯C语言去实现一些协议上的东西。或者说你去编一个小型的一个游戏库都是可以的,当然游戏库的编译,你需要利用QT来一些前端的一些东西。

所以说在我接下来的这个项目里面,我给大家设计了四套项目,这个后台的,这种用C实现一个线程池,理解种线程的调度的问题,然后我们也会去做一个用C语言实现的多点模拟触控的东西;后面两个项目还在调研阶段,还没有公布,这个还需要时间去做。对你自己的学习呢,你可以去看很多的一些东西了,比如说我讲的有hook的一些框架可以看。那么腾讯出的这个HardCoder,包括我之前讲的Matrix也可以去看

在这里,我也会给大家一个承诺,我会把整个的NDK,JNI, 我会用这种免费的形式 。毅力加坚持加梦想这种形式给大家去讲。那有了这个作为前提呢,你可以很熟悉的去知道,Java跟着C之间的一个调用的关系。我之前做了很多的一些大量的一些工作,去梳理。所以你会发现啊,有很多同学会发现你如果即使会跟着我,这中间还有一个不可逾越的一个问题就是说,我可以去看10本书,我可以去写很多的一些代码,但是你会发现你不行,这是个问题,你这个问题到底应该怎么破,我讲的龙书虎书的问题,我讲的四大名校。我说了学完以后一定是四大名校的,虽然是没有学历,但一定是达到这样的一个level

我这两天一直在思考,得出了一个结论:你遇到这样的问题,其实究其本源,还是学习的一个方式和一个技巧性

我会把所有的技巧,告诉你,会教你怎么去学,但是我需要你高度的配合我们去做,并且呢,在做的过程当中,把你的,问题反馈过来,所以说我需要一个同学,是一个高度自律的一个人,之前我有讲过,其实我想一直免费讲下去,但是前期有很多不开心的一些事情,包括一些,质疑我的一些声音啊,或者是其他的一些琐事吧,我觉得这件事儿就翻篇了,当然也有,群里很多热心的一些朋友会,但我觉得这些都OK,没有问题,因为。因为我要决定跟一个人长期的走下去,那么这个人一定是我认可。所以说我也希望给同学们提几点要求,就是说,你如果说决定去做,那么正好我也有这个想法去做这件事,那么我们两个之间如何去配合。

首先一点,你要有高度的自律,哪怕你很累。我知道很多的机构啊,基本上。你跟着他就学会了,你自己去学,基本上一个班第一次课有100多人,第二次课80人,第三次课30人,觉得最后基本上没有人了,其实这是一个很艰难的过程。我希望大家,哪怕你很累,哪怕你这样吧,你先决定了去做这件事情,要出货突破自己,要去走这种底层,包括嵌入式,包括智能化,或者说做一些机顶盒等等,用得着,包括你的源码的一个把握。没有这个基础,你是很难下去的。

我希望我做一件事,是把大家带到最底层,最下面的一个地方,就像我们游泳一样,我带你到海洋最深处的一个地方,那里面有很多的宝藏

那么这个你自己能吸收多少,要看你自己的造化。当然这个是不可避免的。每个人的基础不一样,当然我会讲,就是按照一般的理解和接受能力,谁说我希望大家去思考,我们下一周基本上就到11月份了,所以我希望大家利用接下来的一周的时间好好的反思一下自己,你去思考一下你该怎么去拓展,这是一件事情

对于其他的,我们,后续我讲的是三年的时间来做这个东西,来提升你的一个技能,有的额一个同学做了七八年啊,如果说你只用三年的时间来提升,我觉得是非常值得去做值得去拼一把的事情,当然也有同学找过我,他已经30多了,那么如果说你只想。听某个人的课,我去找BAT的工作,他说的很直白,很露骨,那么我觉得我在这里要对这些同学,比如说你30多个同学做个回忆。那么我觉得就是说其实年纪并不成问题,但是你这种思想实际上是属于投机的思想。这在我这里可能比较行不通的,那么我认为还是希望从底层的东西学起来构建你的知识库,有些东西你可以懂,你不一定要学,比如说我后面会讲四座山。

我们会讲Linux内核里面之间的一些设备的管理,内存的管理,进程之间的通讯。你会进程通讯和Binder,一直搞不清楚。为什么?只是因为你在本科阶段,或者你在硕士阶段没有好好研究过,没有去思考过。

那么对于信号量,实际上我们会发现做这种NDK很多就崩溃,空信号,这些东西信号一些捕获,实际上对于这样的一些东西,我觉得就是一个很基础的一个操作系统的一个理论吧。所以如果说你们有这个概念,你去学,你去做一下Hook也好,或者做PLC呀,或者做点其他东西,你会发现特别特别的难,猴哥之前问过,想听听这个关于Hook的一些东西,对吧,那么这个知识点呢,实际上它是属于逆向加壳的技能,你这个东西实际上就是C的一个经典的反编译,你要去看他的指令集操作,你要懂什么呢,你要懂C,C++编辑器对C源代码的这种过程。

我基本上讲的很多的,都是一些理论上的东西,这也是我一贯的作风,我觉得细节根本不重要,如果说你的思想转变不过来,你学技能得不到提升,你永远永远只是做一些最基础的一些工作,你换一个层面,你会发现举步维艰,可能都想跳楼的这样的感觉。所以说让你突破了,就是一览众山小的这种感觉,但这种感觉不是一蹴而就的,它是长期的,不断的积累的过程。

所以说这一点我也希望大家能坚定信心,如果说你真的已经30多了,这个社会本身就是这样,竞争压力非常的大,那我期望你可以去学一些其它的一些课程来短期内拔高一下,但是我还是希望你能脚踏实地的,把一些基础的内功给夯实扎实。

我们为什么要讲C,有些人可能想听Android应用,面试,或者是一些自定义View,自定义空间,或者是Gradle这些东西。为什么不讲这些东西,这些东西都是“术”。他根本不是一个本质的一些东西,这样的“术”的东西呢,我觉得你去学跟我去学没什么区别嘛,跟一个刚毕业的同学没有任何的区别,我希望你能从一些应试者脱颖而出,脱颖而出的一定是你的这种技术的视野以及对技术深度的理解,跟C,包括C++呢,是最经典的语言,它的用处很多,我们讲这个东西呢,就是要帮助你了解清楚,包括指针那些操作,对内存的灵活自如的释放

如果你能用字节的思维去处理,用面向过程的思维,去把每个点都学好,那你的基础已经很扎实了,你再转换到面向对象,你会发现非常简单。 C++也是面向对象的。我花了很多的时间,包括这半个月我都在去做,所以每天都很晚,如果你不讲C, 只是纯C++面向对象的思维,里没有面向过程这样的一个编程的一些技巧,或者一个策略。你很难进行的思维的一个转化,这点非常重要,所以你会发现,这我也是讲一个学习的一个方式,就是个类比学习法,你要去类比,要类比有些共性的东西,比如说我们这种混合编程问题,我们的Flutter啊。那么有的是JS的操作,有的是DOM树的操作,那么到底有什么区别

这也是学习的过程,所以我希望大家。接下来的这两年到三年的时间内,我们把所有东西都讲清楚。

你会发现,技能点一直在变,但不变的是什么,不变的是这些最本质的一些东西,所以说我也希望大家就是说去正视这些东西。

关于算法的部分,其实我也之前聊过很多次了,无论是公开课还是网络的形式。不要一味的去刷这种Leetcode的,或者是一些其他的一些网上的那些题目。你需要思考编程思维是什么,执行效率是什么,对吧,你去写这种写什么,你就写这种,比如说这样的一个排序问题,你要去理清它的一些思维,这样的话你才能学的比较好,哪怕你一晚上你一个月了,你就做一种算法,我觉得也够了,那其实我也问过很多的,这边的一些牛人,比如说算法导论,其实他们也刷了十几遍,但很多有更多的是让你去找,让你有这样的思维。

推荐书目

  • 《C和指针》
  • 《C专家编程》
  • 《C语言接口和实现》
  • 《C++STL标准程序库开发指南》
    写在最后

所以说我希望大家还是能多跟我交流,你有什么样的困惑,你在这个群里要发挥作用。如果你不能利用这个社群,那么这个群的存在就没有意义。
所以我希望大家能够。在这个群里都讨论一些关于一些技术点,不一定是技术,可以是一些思维上的东西,学习上的东西,学习的突破,包括这些东西都可以去聊一聊,我觉得这点比单纯的一个技能点更重要,今天就分享这么多了
谢谢大家

郑重声明
本文由"释然小师弟"整理,版权版权©️归Jesson老师和Android研习社所有,侵权必究

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

分享读者

作者2013年java转到Android开发,在小厂待过,也去过华为,OPPO等大厂待过,18年四月份进了阿里一直到现在。

被人面试过,也面试过很多人。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长,而且极易碰到天花板技术停滞不前!

我们整理了一份阿里P7级别的Android架构师全套学习资料,特别适合有3-5年以上经验的小伙伴深入学习提升。

主要包括腾讯,以及字节跳动,阿里,华为,小米,等一线互联网公司主流架构技术。

腾讯T3架构师学习专题资料

如果你觉得自己学习效率低,缺乏正确的指导,可以一起学习交流!

我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。

35岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱。

交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。

35岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35岁后的你只会比周围的人更值钱。

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值