当前位置: 华文星空 > 知识

大二学生在 Android 与 Java EE 之间该如何做出选择?

2017-01-16知识

谢邀。看题真是感慨万千,说句有些冒犯的话,题主很可能是走到一条歪路上去了——Android研发水平跟你做几个App,并没有直接关系。以前面试过的一些毕业生,做过一些小有名气的APP的不在少数,但是最后大部分不是被我拒了就是被我老大拒了——

  • 会写Activity,但对于Activity的生命周期一知半解,对于DecorView、PhoneWindow、ViewRootImpl等关系更一无所知。
  • 会写简单的自定义VIew,但不懂View的Traversal机制(甚至说不出invalidate()的意义),不懂事件传递逻辑,基本上更说不出自定义动画卡顿的优化思路。
  • 知道一堆开源框架: 知道Eventbus,但说不清什么是事件总线;用过Retrofit,但搞不懂反射、动态代理是什么;用过Dagger2,但完全没听过Java annotation processor是什么,甚至都没好奇过build/generated包下的代码咋生成出来的;用过realm,但是连Sql语句都写不顺溜。


  • 更别提线程、IO、NDK之类的了……所以才有这么一句戏言:写了十万行Android代码,里面九万行XML……

    当然如果我以上说的这些题主已了然于胸,因此才产生厌倦情绪,那当我没说。否则的话,Android系统是一座高山,你还只是刚刚迈过门槛而已,尚未开始攀登呢,就开始想写博客是否有点……咳咳。

    至于找工作,Java EE的线程、泛型、IO之类的一大堆基础砸牢,无论是做Android还是转Hadoop或者Spark,都一样是必须的。 基础是重中之重, 不是说对找工作有什么帮不帮助,至少是重点加分项。这样说吧,BAT里大部分项目组的校招标准,会选择招一个Java基础吊打其它候选人的,而不是APP开发数量多但基础稀松的。

    ======关于练手项目=====

    关于很多人私信我【写个什么项目练手最好】,我个人的感觉是——如果你不知道自己该搞Android还是Java Web,那就写个IM聊天的项目,然后自己写机器人程序做压力测试。基本上能让你把Java前端和后端的都涵盖了。

    Android端:UI、消息持久化(读写、缓存)、长链接网络(解决NAT超时、DHCP续租、参考TLS1.3的安全机制、私有协议设计、大文件分片、失败重试机制设计)、多线程、消息推送、消息同步等等。

    服务端:持久化(表设计、分库机制)、发送队列、连接管理、并发、负载均衡等等……

    坦白说,现在您大二,边做边学,不骄不躁,这样一个项目迭代两年,比你两年写100个App都强。