初入职场 > 小规模公司 > 中型团队开发 > 一线公司团队开发 > 一或二线公司团队管理
小规模公司按我理解指的是 0 - 200 人公司,Android 开发 1 ~ 3 个,拍着脑袋做事,团队不稳定,容易整个部门被GC (Garbage Collection)
由于毕业学校很难在简历上发出亮点,再加上零碎的Android知识,毕业后能进一家互联网公司拿着不少的工资已经很快活了,但是短暂的快感带来的是无尽的空虚,而且很容易一叶障目,感觉自己还挺能。
小规模团体有技术实力的队伍带节奏还好,然后就是自己肯下功夫苦练。做完需求,要会想着优化,无论功能还是性能之类。你会发现在审视自己代码,修改的过程中有所提高。多看看同事的代码,有好的学习,有差的(你能说出理由,让对方修改,说明你技艺提升了)。
小公司不可怕,可怕的是一旦业务稳定,你自己不找点事做提升自己。在尽所能的完善公司APP的过程中,你的能力也在锻炼。
趁年轻,一定要有闯劲,跳槽这个想法可以有,没必要觉得自己亏欠了谁。对于工作一年到三年的新人来说,想清楚两点就行:
第一,当前公司环境确实糟糕,技术上没有提升,职位上没有上升的空间,更重要的是,钱给不到位。
第二,自己做好了准备,跳槽到下一家,不仅能涨薪,还能有上升的空间(技术和职位)。
如果都想清楚了,那就不要犹豫,走就对了!越早越好!
中型规模的公司有一定研发人员,一般情况下会有5 - 12 Android 开发维护一个 App。团队成员有一定的项目开发经验,不会像小公司经理一样问你:「这个功能会不会做,能不能独立开发App」这种毫无水平的问题。
举个例子,中型规模的团队可能会问到:
HashMap 数据结构是怎样的,可以多线程使用吗,多线程需要使用哪些集合?
只要你能回答上以下内容,面试官会微微一笑
数组作为哈希桶,扩容时候已链表形式,超过8个节点结构改为红黑树。 不能多线程使用,多线程可以用 ConcurrentHashMap
可能有些面试官会追加继续问:
ConcurrentHashMap 为什么可以多线程使用, jdk 1.7 和 1.8 有何区别
如果能回答
1.7 使用 Reentrantlock , 将哈希桶分段,每个 Segment 作为一个锁粒度 1.8 使用 synchronized , 锁粒度更细,锁对象是每个链表的表头
能往上面的内容聊一个大概,面试官应该会欣慰的认可你的水准。
可以说如果将市面上大部分常见的面试题掌握,那么进入中型的公司是力所能及的。
中型公司一般是 2 轮技术面试,第一轮成员骨干或者组长面,聊个大概水平和深度。第二轮总监或者技术经理面,聊聊项目或者技术。(一般总监不会参与编写Android代码,所以如果问技术,那么问网络相关的可能性最大)
符合上述 3 点或者以上,进入中型公司应该不在话下、游刃有余。
腾讯、阿里巴巴、字节跳动、华为、美团、滴滴、百度 …
一线大厂一般有很多部门负责不同的项目,里面不乏知名大学毕业,技术大牛,往往在某一领域已经做到极致,有专门的团队负责某一功能点(性能优化、性能监控、中间件工具组件等),能投入人力物力去做好项目,并且薪酬福利可观,只是工作强度会很大。
在上家公司期间,有幸我们组有位刚毕业的小伙计,从他身上看到很多优秀的学习习惯和方法,在这里不得不承认比你优秀的人还比你努力,是什么能让他变得如此优秀?
说实话想挤进大厂需要 7 分实力和 3 分机遇,并不是每个部门每个面试官都那么强,也是会有人在大厂里摸鱼或者更多的负责管理相关(软技能强)。
因此我们要做的是不断积累,提升知识面的广度和深度,也就是提升自己通过的概率。
这篇没有涵盖太多的面试题,更多的是提供大厂技术面试的一个方向,他们如何考察面试者的水平。可以说大厂会系统性的筛选面试者,一二轮面试通过 java、Android 的技术问题了解面试者的基础能力,能到达第三轮面试说明基础能力合格,再通过项目问题考察面试者的项目/合作能力,当然如果是在线面试会有可能让面试者写编程题或者算法题。如果有想看面试题的可以参考下面这几篇文章:
《Android 面试之必问Android基础》
《最新Android大厂高频面试题解析大全》
《2020-2021Android中高级面试题大全》
对于面试者来说,能做的就是提升面试通过率,系统性学习和总结。
目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。
知识要点:
1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO
随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。
所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。
知识要点:
1、热修复设计
2、插件化框架设计
3、组件化框架设计
4、图片加载框架
5、网络访问框架设计
6、RXJava响应式编程框架设计
NDK(Native Development Kit缩写)一种基于原生程序接口的软件开发工具包,可以让您在 Android 应用中利用 C 和 C++ 代码的工具。通过此工具开发的程序直接在本地运行,而不是虚拟机。
在Android中,NDK是一系列工具的集合,主要用于扩展Android SDK。NDK提供了一系列的工具可以帮助开发者快速的开发C或C++的动态库,并能自动将so和Java应用一起打包成apk。
本篇知识要点:
1、NDK开发之C/C++入门
2、JNI模块开发
3、Linux编程
4、底层图片处理
5、音视频开发
6、机器学习
每一个移动开发者都在为 Flutter 带来的“快速开发、富有表现力和灵活的 UI、原生性能”的特色和理念而痴狂,从超级 App 到独立应用,从纯 Flutter 到混合栈,开发者们在不同的场景下乐此不疲的探索和应用着 Flutter 技术,也在面临着各种各样不同的挑战。
本篇知识要点:
1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter Dart语言系统入门
…
微信小程序作为现在比较火的编程开发应用场景之一,深受市场的青睐,这让不少开发者眼馋不已。但是对于初学者来说,就完全摸不着头脑了,不知道微信小程序开发制作需要学习那些知识,有需要的朋友可以参考本篇。
本篇知识要点:
1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战
Android相关源码解读
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。