热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

应聘高级Android工程师历程感言,附大厂真题面经

前言可能有人会觉得,我技术牛逼就行了,为啥还要提高写文档的能力,有这功夫我还不如多看看源码分析?这是一些初级或者刚入门的工

前言

可能有人会觉得,我技术牛逼就行了,为啥还要提高写文档的能力,有这功夫我还不如多看看源码分析?这是一些初级或者刚入门的工程师的普遍的困惑。这是因为大部分刚刚入行的朋友有一个很深的误区,就是他们以为做软件工程是一个和计算机打交道的工作,其实不然。软件工程不只是和代码打交道,更重要的是和人打交道,是一份社会性质很强的工作。在大部分公司里面,尤其是大厂,牵涉到的人,组,都是非常非常多的。在小厂,人与人之间交流意见和设计可以口口相传,心领神会,但是一旦人开始多了,就只能靠文档了。除非你可以厉害到一个人把所有代码撸完,不然还是最好老老实实的夯实自己写文档的能力。

如果你有写技术博客的习惯,那么恭喜你,相信你已经对如何抓住文档受众的技巧有所了解了。这对你在大厂生存有很大的帮助。如果没有也不要伤心,这篇文章就是为你精心设计的。

在这篇文章里,我会大致的把一份安卓的项目设计文档的骨架,和一些我工作中实际遇到的正反例都列出来,方便大家以后在工作中实践。

几年过去了,桌面开发已经基本死了,现在轮到Android开发了?

有没有发现,这之间有什么不同?桌面开发死的是整个生态,就像实体经济转向了互联网购物一样,整个生态全部死掉,导致了跟桌面开发的各种岗位都不再招人,使得无论开发、产品、运营都必须原有的SEO优化、寻找网站流量转移到移动端。

而现在的Android则不同,它并没有死,相反,移动互联网现在已经发展的非常成熟,并且随着5G的到来,机会将大大增加。

那为什么大家会觉得Android开发不行了呢?无外乎是因为现在Android原生Native开发在逐渐转型,因为Native开发耗时但无法跨平台,无法做到像RN\Weex\Flutter一样,写一遍代码,多端运行的效果。

资本都是逐利的,顾家辉曾说:不以营利为目的公司都是在耍流氓。面对如此高效的产品生产方式,如果你是老板,你会不选择吗?尤其是创业公司。

那问题来了,那为什么依然有Android Native开发呢?因为它是原生的,所有的交互与效率都是最高的,对于大公司而言,不仅要讲究速度,又要讲究APP的运行效率及各项指标。所以,大公司更偏向于Native开发,而小公司更偏向于快速开发。

因此很多小公司不再招Android Native开发,这就导致Android原生岗位的减少。对于初学者而言,小公司岗位少,大公司进不去,这就是为什么培训公司都不再培训Android的原因。这就出现了安卓已死的论调。所以说,并不是Android已死,是门槛高了而已。

现在培训公司喜欢培训H5,学会保就业的承诺永久不变。这就是因为RN\Weex\Flutter的语法与H5相似,学了H5,除了能做原有的WEB开发以后,跨平台语言RN\WEEX\Flutter使H5的岗位大大增加,所以并不是H5好学,也并不是因为它火,只是它就业门槛低了而已。

同样的,即便你从H5开始进入跨平台开发语言,你以为会了RN\Weex\Flutter就不需要Android原生了?只是Androd底层架构不变,Android原生永远是需要学习的,所有的上层跨平台应用都是靠原生控件来实现的。Flutter可能有所例外,但Flutter是用Dart语言来写的,大家都不会,谁也别看不起谁,而且Flutter可以与Android原生完美兼容。

从商家逐利的本质上看,跨平台开发是趋势,即便RN\Weex\Flutter哪一天都挂了,还是会出来另一个跨平台语言一统天下。这个世界上,唯一不变的就是变化。

所以,Android不会死,但Android的门槛会提高。想在Android领域成就一翻作为,除了Android原生也需要了解跨平台开发。如果你是新入门的同学,我建议你在了解Android基本使用后,以跨平台开发学习为主,先找到一份工作(毕业就校招进入大公司的除外)。如果你的Android从业者,我建议大家学习跨平台语言,使自己永远立于不败之地,不要等到哪一天黑天鹅来了,欲哭无泪。(黑天鹅全称为黑天鹅事件,指目前无法预知的突发事件)

《设计思想解读开源框架》

第一章、 热修复设计

  • 第一节、 AOT/JIT & dexopt 与 dex2oat

  • 第二节、 热修复设计之 CLASS_ISPREVERIFIED 问题

  • 第三节、热修复设计之热修复原理

  • 第四节、Tinker 的集成与使用(自动补丁包生成)

    第二章、 插件化框架设计

  • 第一节、 Class 文件与 Dex 文件的结构解读

  • 第二节、 Android 资源加载机制详解

  • 第三节、 四大组件调用原理

  • 第四节、 so 文件加载机制

  • 第五节、 Android 系统服务实现原理

    第三章、 组件化框架设计

  • 第一节、阿里巴巴开源路由框——ARouter 原理分析

  • 第二节、APT 编译时期自动生成代码&动态类加载

  • 第三节、 Java SPI 机制

  • 第四节、 AOP&IOC

  • 第五节、 手写组件化架构

    第四章、图片加载框架

  • 第一节、图片加载框架选型

  • 第二节、Glide 原理分析

  • 第三节、手写图片加载框架实战

    第五章、网络访问框架设计

  • 第一节、网络通信必备基础

  • 第二节、OkHttp 源码解读

  • 第三节、Retrofit 源码解析

    第六章、 RXJava 响应式编程框架设计

  • 第一节、链式调用

  • 第二节、 扩展的观察者模式

  • 第三节、事件变换设计

  • 第四节、Scheduler 线程控制

    第七章、 IOC 架构设计

  • 第一节、 依赖注入与控制反转

  • 第二节、ButterKnife 原理上篇、中篇、下篇

  • 第三节、Dagger 架构设计核心解密

    第八章、 Android 架构组件 Jetpack

  • 第一节、 LiveData 原理

  • 第二节、 Navigation 如何解决 tabLayout 问题

  • 第三节、 ViewModel 如何感知 View 生命周期及内核原理

  • 第四节、 Room 架构方式方法

  • 第五节、 dataBinding 为什么能够支持 MVVM

  • 第六节、 WorkManager 内核揭秘

  • 第七节、 Lifecycles 生命周期


    本文包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

如果需要八份神级学习进阶资料,赶紧戳这里免费领取!
系列技术文章等,资源持续更新中…**
[外链图片转存中…(img-Lh9Gxch7-1621506093245)]

如果需要八份神级学习进阶资料,赶紧戳这里免费领取!


推荐阅读
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了Flutter添加APP启动StoryView相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 分布式架构_MyBatis整体架构分析:分布式架构演进+相关笔记参考
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了MyBatis整体架构分析:分布式架构演进+相关笔记参考相关的知识,希望对你有一定的参考价值。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • 本文介绍了一个Magento模块,其主要功能是实现前台用户利用表单给管理员发送邮件。通过阅读该模块的代码,可以了解到一些有关Magento的细节,例如如何获取系统标签id、如何使用Magento默认的提示信息以及如何使用smtp服务等。文章还提到了安装SMTP Pro插件的方法,并给出了前台页面的代码示例。 ... [详细]
  • flutter图片缓存Flutter的图片缓存机制有问题(可能是我使用的版本1.12.13有问题)网络图片会默认缓存到本地,但是不管图片是不是完整的或者损坏的,导致页面在下次进入的 ... [详细]
  • Java工程师书单(初级,中级,高级)
    简介怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序 ... [详细]
  • 软件测试工程师,需要达到什么水平才能顺利拿到 20k+ 无压力?
    前言最近看到很多应届生晒offer,稍有名气点的公司给出的价格都是一年30多W或者月薪20几k,相比之下工作几年的自己薪资确实很寒酸.根据我自己找工作经历,二线城市一般小公司招聘 ... [详细]
  • 目前正在做毕业设计,一个关于校园服务的app,我会抽取已完成的相关代码写到文章里。一是为了造福这个曾经帮助过我的社区,二是写文章的同时更能巩固相关知识的记忆。一、前言在爬取教务系统 ... [详细]
  •     系统采用jeeplus框架(ssm+redis+shiro+mongodb+redis),默认是做了JSP未做前后端分离,由于业务需要已经多终端使用的需求(H5、小程序等) ... [详细]
  • 博客_2018年博客总结
    本文由编程笔记#小编为大家整理,主要介绍了2018年博客总结相关的知识,希望对你有一定的参考价值。前言     ... [详细]
  • <!DOCTYPEhtml><htmllang=en><head><metacharset=UT ... [详细]
  • Spring MVC 浅谈
    大学时写的的文章,当时文章水平略差,大家见谅。MVC这个词儿,最早的定义应该是作为一种软件架构设计模式出现在软工里面的,即使用model、view、controller来设计及定 ... [详细]
  • 09 性能优化网络优化
    如何优化一个网络请求呢?相信大家在面试的时候可能会被问到这个问题。今天我其实就是讲述下我知道的一些简单的优化方式,可以帮助大家在面试的过程中得到点基础分数。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有