面试Android 知识Android开发经验谈

自学Android,学多久可以加入字节跳动?

2021-01-12  本文已影响0人  今日Android

在回答自学Android,学多久可以加入字节跳动之前,我们先需要了解加入字节跳动的岗位职能要求,下图是我们从boss直聘上选取的今日头条Android工程师职位描述。
职位要求

假如我变成了一只小白。我想自学 Android,并且想要找到一份工作,我预计需要 6 个月的时间,前提条件是每天都处于高效率的学习状态当中,并且每天的学习时间至少在 12 个小时以上。

即便是这样,我敢肯定,找到的工作肯定不会太好,勉强能够维持生活吧,毕竟是零基础入门啊。如果想更进一步,真正成为一名不可或缺的高级Android工程师,时间需要更久,两年、三年、五年,直到秃的那天。想着想着,我就觉得有必要为那一天做点准备,以备不时之需。

1、熟练掌握Java语言,深入理解语言特性;熟练掌握Android Studio或其他开发环境

Android应用程序开发是以Java语言为基础的,所以需要有扎实的Java基础知识。我们先就第一点熟练掌握Java语言,深入理解语言特性,展开说明:
首先熟悉java基本语法,然后熟悉设计模式等。
a) Java基础语法:看下面的《Java知识点列表》
b)设计模式:由于在Android系统的框架层当中,使用了大量的设计模式,如果没有这个方面的知识,对于Android的理解就会大打折扣。

Java基础

Java高阶

设计模式基于六大原则

熟练掌握Android Studio或其他开发环境

2.熟悉Android Sdk、Framework、基础组件,对重要系统特性和原理有一定的理解

SDK 的实现目标,概括来说:简洁、稳定、高效。
简洁

对于用户而言,一款好的产品应该是简洁易用的,不该让他们花费太长的时间学习。SDK 也当如此,它不该出现复杂繁琐的对接工作,使用者通过阅读代码和文档,花费很少的时间就能做好 SDK 的对接。

稳定
稳定站在 SDK 使用者角度来看,我们期望第三方 SDK 的服务是稳定高效的,体现在提供稳定可靠的服务,同时运行时性能要高效。这就要求我们在设计实现 SDK 时要尽可能做到以下几点:

高效

无论是普通的应用开发还是 SDK 开发,都应该考虑到性能问题,SDK 设计者要着重考虑以下问题:

如何学习Android Framework

Android Framework精编内核解析
需要AndroidFramework开发笔记完整文档的,点击我 即可获取资料免费领取方式!

3、能够使用常用的第三方库、基础组件,并对其特性和实现原理有一定的了解

随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,还有65535,应用之间的互相调用等等问题,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。

所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。

Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架,只有将掌握这些Android第三方框架,并对其特性和实现原理有一定的了解,相信你离字节跳动面试跟进了一步!

高级Android组件化、插件化强化实战手册
需要高级Android组件化、插件化强化实战手册的,点击我 即可获取资料免费领取方式!

4、了解MVC/MVP/MVVM等设计模式,熟悉面向对象思想及相关设计模式

MVC、MVP、MVVM是我们工作和面试中都比较重要的一块,但很多时候我们却有点迷惑。比如看了好多篇文章都搞不懂MVC到底是个啥本来想写个MVP写着写着就变成MVC了,到底Databing和MVVM之间有啥见不得人的关系。

MVC
可能由于MVP、MVVM的兴起,MVC在android中的应用变得越来越少了,但MVC是基础,理解好MVC才能更好的理解MVP,MVVM。因为后两种都是基于MVC发展而来的。
1、MVC眼花缭乱设计图

我们从网上搜索mvc相关资料时,如果你多看几篇文章的话可能会发现,好像他们介绍的设计图都不太一样,这里罗列了大部分的设计图

2、MVC设计图解释

到底上面列出的设计图哪个才是对的。其实都是对的。为什么这么说呢,这得从mvc的发展说起。 MVC框架模式最早由Trygve Reenskaug 于1978年在Smalltalk-80系统上首次提出。经过了这么多年的发展,当然会演变出不同的版本,但核心没变依旧还是三层模型Model-View-Control。

MVP

1、MVP说明

MVP跟MVC很相像,文章开头列出了很多种MVC的设计图,所以根据MVC的发展来看,我们把MVP当成MVC来看也不为过,因为MVP也是三层,唯一的差别是Model和View之间不进行通讯,都是通过Presenter完成。 前面介绍MVC的时候提到了算是致命缺点吧,在android中由于activity(god object)的存在,Controller和View很难做到完全解耦。但在MVP中就可以很好的解决这个问题 看下MVP的设计图:

一般情况下就这两种。
MVVM

1、MVVM说明

MVP中我们说过随着业务逻辑的增加,UI的改变多的情况下,会有非常多的跟UI相关的case,这样就会造成View的接口会很庞大。而MVVM就解决了这个问题,通过双向绑定的机制,实现数据和UI内容,只要想改其中一方,另一方都能够及时更新的一种设计理念,这样就省去了很多在View层中写很多case的情况,只需要改变数据就行。 先看下MVVM设计图:

一般情况下就这两种情况,这看起来跟MVP好像没啥差别,其实区别还是挺大的,在MVP中View和presenter要相互持有,方便调用对方,而在MVP中 View和ViewModel通过Binding进行关联,他们之前的关联处理通过DataBinding完成。

5、了解常用的Debug工具和方法,熟练掌握异常处理机制

Android Studio 你需要掌握的Debug技巧

6、Kotlin

Google 几年前就开始走 “Kotlin First” 的路线,目前很多官方的文档和 Demo 都是使用 Kotlin 语言作为默认,Kotlin 的重要性不言而喻。

Google 官方也出了个“Refactoring to Kotlin”的教程,其介绍如下:

此 Codelab 的适用对象为任何使用 Java 并考虑将其项目迁移到 Kotlin 的开发者。我们将从数个 Java 类入手,引导您使用 IDE 将它们转换为 Kotlin。接着,我们会审视转换后的代码,研究如何加以改善,使其更符合使用习惯,同时避免常见错误

本文在开源项目:https://github.com/Android-Alvin/Android-LearningNotes 中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中...

上一篇 下一篇

猜你喜欢

热点阅读