中关村|如何看待 Android 面试却是 Java 面试官?

中关村|如何看待 Android 面试却是 Java 面试官?

文章图片

中关村|如何看待 Android 面试却是 Java 面试官?

前段时间一个朋友的安卓客户端公司bug很多 , 他找了一个新的安卓开发者接手 。 他自己不懂技术 , 就想让我帮他看看新的安卓开发者水平怎么样 。
荟牛我小王我是一个半生不熟的Java后端开发者(也就是做了4年 , 前5年是游戏前端) 。
我也懂一些Android开发 , 但是对流行的框架不太熟悉 , 就抱着三心二意的态度去了 。

毕竟我觉得外行指导内行是瞎指挥 。 但是看了代码库 , 和开发者聊了聊 , 越来越发现他们的Android开发团队人员问题很明显:
1 。 数据结构基础不扎实 。 数据结构总是只识别Arraylist , 业务中有很多键值搜索 , 所以要用list来遍历 。 问为什么 , 开发者回答说HashMap不太懂 , 所以没用 。
列表也可以实现 。 至于什么是HashSet?我能吃吗?2.代码设计能力弱 , 对OOP理解不全面 , 逻辑分支管理不到位 。 每一回合都有十几个类成员变量 。
仔细阅读代码 , 发现很多都是函数级的临时变量 , 完全没有必要升级到类成员级 。
问原因就是说“想到就写吧 , 说不定以后有用” 。 这么多成员变量 , 调试的时候只想骂我妈 。
对于一些状态管理比较复杂的对象 , 比如map  sdk的未初始化、正在初始化、初始化失败、重复初始化 , 这些状态分支没有完全覆盖 。 只遵循Demo中的例子 , 只处理假设成功运行的逻辑 , 忽略其他逻辑分支 , 导致一旦实际运行的SDK状态落到代码没有处理的分支 , 程序就会挂起 。 这些问题很难通过黑盒测试发现 。
3.太迷信框架了 , 我觉得Android开发根本就是基于一套框架 。 在一个朋友公司的代码库中 , singleton模式的实现很奇怪 。 一些线程是不安全的 , 而另一些则极其冗长 。 和开发者交流 , 发现他们迷信框架里的一些写法 , 觉得绝对正确 。
大家都做对了 , 至于为什么只做 , 没有想太多 , 没有考虑适用性 。 一个朋友公司的开发者甚至写了一套所谓的“框架”给人在github上用 , 而且有几百个star 。
看完他们 , 感觉这个东西更像是“为了3000杀了你”而不是框架:它依赖于其他外国人写的大量不同的框架 , 编写并封装一些初始化的脚手架代码 , 成为自己的框架 。
即使在自己的业务代码中 , EventBus的事件监控在Activity退出时没有被正确移除 , 但他对自己的水平有很高的信心 , 觉得自己在我朋友的公司浪费了 。
4.Java的原生多线程编程基础几乎是0 。 Synchronized和volatile语义不懂 。 线程应用在new和start之后基本不知道 , 更不用说并发包里的工具类了 。 当时我就向朋友反映了 。
朋友觉得可以面试一下 , 看看有没有更好的 , 骑驴找马 , 如果有合适的试用期 , 交接后请佛离开 。
我就硬着头皮看几个 。 当时JD提供2-3年工作经验 , 税前月薪15K左右 , 本科学历 。 根据经验 , 这种条件下找个像样的Java后端开发并不难 , 哪怕不是高薪 。
但是面试了十几个人之后 , 我开始绝望了 。 针对存在的问题 , 我在面试的时候比较关注数据结构基础和代码设计 。 数据结构只有两个人能给出很好的答案 , 其他的和现有水平差不多 。
在代码设计能力方面 , 也是一个普遍的弱点 。 让他自己实现一个缓存 。 有很多人连接口方法应该是哪个都分不清 , 更别说实现细节了 。