给公司面试了五十多个Android开发,我已经吐血身亡了_Kotlin

身在某二线互联网公司,面试了很多应聘安卓岗位的程序员。符合要求的很少,目前来看也就百分之五左右。

我面试Android的时候一般都是先看看面试者的Java基础知识,然后是一些基本的数据结构和基本的算法。然后是一些面向对象的思想,最后是Android。因为任务基础扎实了,面向对象的思想有了,开发Android是很简单的事情,即使有什么不懂,也很快会学会。

很大一部分面试者连List 与ArrayList什么关系都搞不清楚,至于List的其他实现类一概不知。还有Map, Set 就更不知道了。让谈谈常用的数据结构,完全蒙了,什么是数据结构?听过但是不知道,好像这个东西离他们很遥远似的。我说你开发中不用数组,不用HashMap吗?大部分人惊讶的反问:数组是数据结构吗?我说数组的底层不就是顺序列表吗?一脸疑惑,什么是顺序列表?我已经吐血身亡了。泛型只知道List,问什么意思完全不知道。至于面向对象,几乎没有人将多态讲明白。

总的来说:

目前安卓开发的问题在于大部分都是三年工作时间,一年工作经验。一般来说问题在于以下五点。

第一,主要依靠第三方类库,自己不了解内部实现。简历上罗列一大批开源类库,使用经验有,内部原理一无所知。简单来说imageloder怎么做缓存的,缓存算法有哪些,lru的特性是什么,为什么用linkedhashmap实现。。。基本没有能讲清楚的。

第二,Java功底不足。arraylist怎么实现的,map怎么实现的,hashmap和arraymap适用场景,volatile和synchronized有什么区别,多线程如何同步。。。这些都是基础知识,不懂的大有人在。

第三,虚拟机不了解,就敢说精通性能优化。内存泄露和溢出天天说,具体怎么引起的,怎么分析堆内存,怎么做内存管理,这些不是简单网上几篇帖子就能学会的。

第四,安卓基础不扎实,线程怎么通信,进程怎么通信。好多程序员还停留在handler是用来修改ui界面这样的认知程度。framework层还有很多要学的,更别提内核了,都是宝藏啊。。

第五,网络通信这一块,tcp/udp基础协议还是要理解吧,tcp为什么安全可靠,怎么做到的,HTTP协议是怎么回事,只会用OKHTTP是不行的啊朋友。

可能说的唠叨了点,我想表达的是,一个安卓开发的自我修养并不应该局限于应用开发。需要学习的东西太多了,如果你内功足够,随时离职都有大批公司抢着要,只是会做应用的程序员肯定要被淘汰。

大部分公司要的是三年工作经验,而不是一年经验凑合了三年的人。

最后,入了程序员的坑,就的学到老啊。。。

绵薄之力

做为一名Android开发者,接下来我想分享一下这些年来,我对于技术一些归纳和总结,和自己对作为一名Android高级开发者需要掌握那些技能的笔记分享,希望能帮助到有心在技术这条道路上一路走到黑的朋友!

给公司面试了五十多个Android开发,我已经吐血身亡了_数据结构_02

一、架构师筑基必备技能

1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO
……

给公司面试了五十多个Android开发,我已经吐血身亡了_Android_03

二、Android百大框架源码解析

1.Retrofit 2.0源码解析
2.Okhttp3源码解析
3.ButterKnife源码解析
4.MPAndroidChart 源码解析
5.Glide源码解析
6.Leakcanary 源码解析
7.Universal-lmage-Loader源码解析
8.EventBus 3.0源码解析
9.zxing源码分析
10.Picasso源码解析
11.LottieAndroid使用详解及源码解析
12.Fresco 源码分析——图片加载流程

给公司面试了五十多个Android开发,我已经吐血身亡了_Kotlin_04

三、Android性能优化实战解析

  • 腾讯Bugly:对字符串匹配算法的一点理解
  • 爱奇艺:安卓APP崩溃捕获方案——xCrash
  • 字节跳动:深入理解Gradle框架之一:Plugin, Extension, buildSrc
  • 百度APP技术:Android H5首屏优化实践
  • 支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」
  • 携程:从智行 Android 项目看组件化架构实践
  • 网易新闻构建优化:如何让你的构建速度“势如闪电”?

给公司面试了五十多个Android开发,我已经吐血身亡了_数据结构_05

四、高级kotlin强化实战

1、Kotlin入门教程
2、Kotlin 实战避坑指南
3、项目实战《Kotlin Jetpack 实战》

  • 从一个膜拜大神的 Demo 开始
  • Kotlin 写 Gradle 脚本是一种什么体验?
  • Kotlin 编程的三重境界
  • Kotlin 高阶函数
  • Kotlin 泛型
  • Kotlin 扩展
  • Kotlin 委托
  • 协程“不为人知”的调试技巧
  • 图解协程:suspend

给公司面试了五十多个Android开发,我已经吐血身亡了_Kotlin_06

五、Android高级UI开源框架进阶解密

1.SmartRefreshLayout的使用
2.Android之PullToRefresh控件源码解析
3.Android-PullToRefresh下拉刷新库基本用法
4.LoadSir-高效易用的加载反馈页管理框架
5.Android通用LoadingView加载框架详解
6.MPAndroidChart实现LineChart(折线图)
7.hellocharts-android使用指南
8.SmartTable使用指南
9.开源项目android-uitableview介绍
10.ExcelPanel 使用指南
11.Android开源项目SlidingMenu深切解析
12.MaterialDrawer使用指南

给公司面试了五十多个Android开发,我已经吐血身亡了_Android_07

六、NDK模块开发

1、NDK 模块开发
2、JNI 模块
3、Native 开发工具
4、Linux 编程
5、底层图片处理
6、音视频开发
7、机器学习

给公司面试了五十多个Android开发,我已经吐血身亡了_Android_08

七、Flutter技术进阶

1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter开发环境搭建和调试
5、Dart语法篇之基础语法(一)
6、Dart语法篇之集合的使用与源码解析(二)
7、Dart语法篇之集合操作符函数与源码分析(三)

给公司面试了五十多个Android开发,我已经吐血身亡了_Kotlin_09

八、微信小程序开发

1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战……

给公司面试了五十多个Android开发,我已经吐血身亡了_数据结构_10