资深Android开发带你入门Framework,架构师必备技能

开头

先说一下我大概的情况吧。渣本毕业,工作已经有快两年了,从高中就开始玩小破站。无论是学习还是日常放松都是在b站。大学主学的软件技术专业,所以,进大学校门那一刻起,去上海bilibili工作就在心里埋下了种子。在学校,专业学的挺好的,自己写过一些小项目,也参与过一些协会开发的项目。
两年前刚毕业时候,b站也有校招,我当然满怀期待的参加了,但是并没有被录用。当时,挺失落的吧,当时也有想过放弃:我一个渣渣二本毕业,凭什么去上海,进b站啊。所以就找了个普普通通的公司开始了我的程序员生涯。
到今年年初的时候,疫情爆发了,各行业都收到的很大的影响,也包括我任职的小公司。在家隔离了一个多月,在家玩手机的看到了b站的社招,人闲下来的时候还真就会有各种想法会冒出来,我突然就想到,要不再试一次吧,反正工作也没了,在家闲着也是闲着,就着手准备bilibili的面试。刷面试题,看别人的面经,总结了一下校招时的失败经验…准备了挺久的,得有20多天吧,把学习所学的和工作两年的所学以及网友的经验,系统的梳理、巩固。世间所有的付出终是有回报的,努力的耕耘,肯定是有收获的。我成功的入职了bilibili,也是要感谢网友们提供的宝贵经验,所以整理了一下,把我的面经分享出来给大家。

在这个知识膨胀的时代,每天面对铺面而来的海量信息,我们的学习也不再是按照以往传统的学习模式了,更重要的是我们要进行科学学习,什么是学习?学会学习才是根本,如何学会学习,那就要讲求方法了,我们经常看到一些学霸等传奇人物,听他们的经历,学他们的方法,路有千千万,但是你想过没有,也许适合你走的只有一条而已,所以,别人的不一定适合你,适合自己的才是最好的,但是学习效果不佳的原因却大致有以下几个:

  1. 没有正向反馈(学习到什么程度自己心里没数)
  2. 学习方法不对(用错误的方式去学习)
  3. 知识不成体系(学的知识很杂,东一块西一块)
  4. 有效时间不多(感觉每有多余的时间用在学习上)

关于“没有正向反馈”

这应该很好理解,这里的没有正向反馈指的就是我们在学习的过程中并不能看到感受到因学习而真正给我们带来有什么不一样的东西,哪怕是一种感觉,又或者是物质上的东西,总之,这是能够让我从内心觉得“学习真好”,可是我们往往却很少遇到。我们总是希望付出了就能立马看到收获的,一旦达不到自己的期望,我们也就失去了激情,甚至开始抱怨,自然学习效率就会下降,所以学习中,我们一定要对正向反馈加以重视,这里说几点关于我学习中用到的正向反馈吧!

  • 我学习编程有写博客的习惯,当我刚写完一篇博客的时候会有点小小成就感,随后我会发给我认识的一些前辈,很多都给予了肯定,哪怕是鼓励我我也高兴!

  • 有的时候我也会给一些大牛投稿,一旦被采用,那种心情是相当的说不出口的(太高兴了)

  • 在专业上我会帮别人解答一些问题或者分享一些知识等

以上都是我的一些正向反馈,这些都能激励我更有动力的去学习,学习,你也有该有自己的正向反馈!

关于“学习方法不对”

这几天特别中意一句话“当你找到了适合自己的努力方式,你就如同万千牛人一样走在了光彩夺目掌声阵阵的人生征途上”,这句话就强调了方法是多么的重要,有的时候我们很项目那些学霸,觉得是自己智商不够,其实不然,最重要的是那些所谓的学霸都有自己的一套学习方法。我们可以扪心自问,我们大多数人每天都在学习,但是又有多少人真正思考过自己学习方法的问题呢?我只是机械式的去学习而已,并没有想着找寻一套属于自己的方法体系,这就是我们与学霸的差别吧!

前几天在读美国作家本尼迪克特•凯里的《如何学习》一书,读完很受启发,其中书中提到了一种学习方法叫做“分散式学习”,讲述的是利用间隔效应去学习,通俗来说就是我们把大块的学习任务拆分开来去学,书中提到,你花两个小时一口气把一个知识点给学了没有分两天每天一小时的学习效果好,这就是方法

关于学习方法的探讨很多很多,只是我们貌似从来没有在意过,另外,切记只有适合自己的才是最好的,成功的人有很多,但是他们的路你不一定走得了,去寻找属于自己的学习方法论吧!

关于“知识不成体系”

不知道大家在学习的过程中有没有做笔记的习惯,我一直觉得做笔记是非常重要的,记得在高中的时候,我会给每一科都准备一个笔记本,上面写满了笔记,但是后来愈发的觉得笔记很乱,经常是一个知识点在很多页记着,这就导致了很多问题。我们在回过头来说“知识不成体系”,确实如此,我们每天都在学习,每天都接收了大量的信息,而且这些信息又是零散的,不成体系的,如果我们再不加以记录,很容易遗忘,而且会感觉乱糟糟的,一点也不清晰明了,该怎么办?很简单,将我们学到的知识都记录下来,而且是分门别类的记录下来,将知识体系化,做一个属于自己的体系化知识库,这样我们不仅会对我们学习的知识有个全面的了解,而且非常方便我们的复习巩固等!还可以让我们看到哪地方是自己的弱势,方便弥补!这里以我自己举个例子,方便大家理解!

我在学习Android的时候会将自己学到知识都分类别的进行整理,将自己学到的知识体系化,例如我会分成如下类别:

  • 性能优化
  • 多线程
  • 源码分析
  • 数据结构和算法
  • 设计模式
  • 框架设计
  • NDK
  • APP开发
  • 微信小程序
  • Flutter和kotlin

再比如我在学习中制作的一个学习思路脑图,由于内容过多,这里就放上一个大概的思路脑图分享给大家 高清图可以看文末

有了以上的分类记录,我就对Android的一个大概的知识体系有个了解,以后相关学习都会放在对应的目录下,平常看看,也知道自己哪方面不熟悉,随时复习巩固,做到对学到的知识心中有数,体系化知识构建不可缺少!

总结

首先是感觉自己的基础还是不够吧,大厂好像都喜欢问这些底层原理。

另外一部分原因在于资料也还没有看完,一面时凭借那份资料考前突击恶补个几天居然也能轻松应对(在这里还是要感谢那份资料,真的牛),于是自我感觉良好,资料就没有怎么深究下去了。

之前的准备只涉及了Java、Android、计网、数据结构与算法这些方面,面对面试官对其他基础课程的考察显得捉襟见肘。

下一步还是要查漏补缺,进行针对性复习。

最后的最后,那套资料这次一定要全部看完,是真的太全面了,各个知识点都涵盖了,几乎我面试遇到的所有问题的知识点这里面都有!在这里也免费分享给大家,希望大家不要犯和我一样的错误呀!!!一定要看完!


获取方式:点击我的GitHub

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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/386556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java——线程锁,死锁,等待唤醒机制

一、线程锁 线程安全问题 其实,线程安全问题都是由全局变量及静态变量引起的。若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,…

资深大牛带你了解源码!关于Android程序员最近的状况,大厂内部资料

前言 回顾一下自己这段时间的经历,因公司突然通知裁员,我匆匆忙忙地出去面了几家,但最终都没有拿到offer,我感觉今年的寒冬有点冷。公司开始第二波裁员,我决定主动拿赔偿走人。后续的面试过程我做了一些准备&#xff…

AE 新建项目(一)(持续更新,做到哪算哪)

开发环境 工具:Visual Studio 2012、ArcEngine10.4.1 语言:C# 开发步骤 1、打开Visual Studio 2012,选择新建项目,创建一个.NET Framework4的,Windows窗体应用程序。取名Demo 2、工具箱中,拖一个splitConta…

基于redis分布式锁实现的多线程并发程序

前两个版本的代码 都或多或少存在一定的问题,虽然可能微乎其微,但是程序需要严谨再严谨, 第一个版本问题: 局限于单机版,依赖于 Jvm的锁 第二个版本问题: 极端情况下,解锁逻辑的问题&#xf…

day15 Ui自动化元素的定位

day15 元素的定位Ui自动化元素的定位1、火狐浏览器安装try xpath2、元素定位思路:(1)查看页面元素,确认能够唯一定位到元素的属性,比如id,文案3、学习xpath cssSelector 手写定位方式xpath(xpat…

几张图可以理解GC JVM调优的内容

public class ApiPurchaseOrderServiceApp {public static void main(String[] args) throws Exception {ApiPurchaseOrderServiceApp mnew ApiPurchaseOrderServiceApp();m.compute();//栈System.out.println("ok");//方法出口}public int compute(){int a1;//局部…

灵魂拷问!一起刷完了这份1307页的安卓面试宝典吧,不吃透都对不起自己

前言 每个程序员都有一个梦想,那就是进一线互联网公司深造,不要跟我说你不想进去,如果给你一个这样的平台,不管是薪资待遇还是接触的高度来说,对我们程序员来说都是一个机会,我以前有一个同事,…

ShardingSphere分库分表实战

ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于…

灵魂拷问!细数Android开发者的艰辛历程,成功入职阿里

什么是中年危机 根据权威数据显示,国内IT程序员鼎盛时期是在25-27岁左右,30岁对于程序员而言完全是一个38线,接着就是转业转岗的事情,这一点在业界也算是一个共识了。 大学毕业步入IT行业普遍年龄也是在22岁左右,然而…

JMM模型到并发编程

电脑:内存 L1 L2 L3 缓存 CPU ctrlatldel就可以看到 Java 有线程内存,在执行线程的时候,会从主内存把变量加载到工作内存(缓存),所以,在多线程同时改变一个静态变量时候,实际是分开…

焦虑的移动互联网开发者如何破局?专题解析

尴尬的35岁 不知道是哪个人提出的职场35岁就要面临被淘汰的定律,因为35岁定律本来就是个伪命题,尤其是在IT行业! 现在年八九百万的大学生毕业,他们虽然年轻活力,但是很多企业也将之“拒之门外”。 35岁的不要,二十几…

17.前端路由router-07keep-alive

keep-alive是Vue提供的一个抽象组件,用来对组件进行缓存,从而节省性能, 由于是一个抽象组件,所以在v页面渲染完毕后不会被渲染成一个DOM元素 当组件在keep-alive内被切换时组件的activated、deactivated这两个生命 周期钩子函数会…

使用IDEA创建Maven项目和Maven使用入门(配图详解)

本文详解的讲解了使用IDEA创建Maven项目,及Maven的基础入门。 1、打开IDEA,右上角选择File->New->Project 2、如图中所示选择Maven(可按自己所需添加,否则加载时速度很慢) 3、添加项目所需Groupld,ArtifactId,Ve…

jvisualvm安装Visual GC插件

给jdk自带的jvisualvm安装Visual GC插件,遇到Were sorry the java.net site has closed(我们很抱歉java.net网站已经关闭) 1、找到新的更新地址 visualvm新访问地址:https://visualvm.github.io/index.html 进入“Plugins”&…

来自阿里巴巴佛系安卓程序员的指南,专题解析

开头 中国互联网发展的这些年,如今90后程序员是中国程序员的主力军,互联网的热潮也让一批批00后蠢蠢欲动,尝试涌入互联网圈。 当程序员容易,当一个优秀的程序员需要不断学习,从初级程序员到高级程序员,从…

C#在WinForm中打开控制台显示

引用: namespace 测试使用 {public partial class Form1 : Form{[System.Runtime.InteropServices.DllImport("kernel32.dll", SetLastError true)][return: System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bo…

Redis+AQS

前言 对于java的单进程应用来说,存在资源竞争的场景可以使用synchronized关键字和Lock来对资源进行加锁,使整个操作具有原子性。但是对于多进程或者分布式的应用来说,上面提到的锁不共享,做不到互相通讯,所以就需要分…

disruptor 介绍

一、背景 1.来源 Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内部的内存队列的延迟问题,而不是分布式队列。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注。…

算法题+JVM+自定义View,详细的Android学习指南

前言 想要成为一名优秀的Android开发,你需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~。 学算法真的很痛苦,虽然大数据现在很火,但找到适合自己定位的职业也未尝不是一种合理选择。 投百度的经历非…

用过的前端插件合集

用过的前端插件合集 FontAwesome字体 Font Awesome详细用法参见上述站点的Examples。 SweetAlert系列 SweetAlertSweetAlert2SweetAlert 到 SweetAlert2 升级指南示例: 基本使用: swal("标题","内容","success);使用SweetAlert…