阶段规划
初入职场 > 小规模公司 > 中型团队开发 > 一线公司团队开发 > 一或二线公司团队管理
如何走出小规模公司?
小规模公司按我理解指的是 0 - 200 人公司,Android 开发 1 ~ 3 个,拍着脑袋做事,团队不稳定,容易整个部门被GC (Garbage Collection)
由于毕业学校很难在简历上发出亮点,再加上零碎的Android知识,毕业后能进一家互联网公司拿着不少的工资已经很快活了,但是短暂的快感带来的是无尽的空虚,而且很容易一叶障目,感觉自己还挺能。
不得不说,好的博客文章能够提升曝光率 ,大厂内推往往有不错的奖励金,如果博客文章写的好,就会有人愿意去内推你,给面试机会。
怎么进入中型公司?
中型规模的公司有一定研发人员,一般情况下会有5 - 12 Android 开发维护一个 App。团队成员有一定的项目开发经验,不会像小公司经理一样问你:「这个功能会不会做,能不能独立开发App」这种毫无水平的问题。
举个例子,中型规模的团队可能会问到:
HashMap 数据结构是怎样的,可以多线程使用吗,多线程需要使用哪些集合?
只要你能回答上以下内容,面试官会微微一笑
数组作为哈希桶,扩容时候已链表形式,超过8个节点结构改为红黑树。 不能多线程使用,多线程可以用 ConcurrentHashMap
可能有些面试官会追加继续问:
ConcurrentHashMap 为什么可以多线程使用, jdk 1.7 和 1.8 有何区别
如果能回答
1.7 使用 Reentrantlock , 将哈希桶分段,每个 Segment 作为一个锁粒度 1.8 使用 synchronized , 锁粒度更细,锁对象是每个链表的表头
能往上面的内容聊一个大概,面试官应该会欣慰的认可你的水准。
可以说如果将市面上大部分常见的面试题掌握,那么进入中型的公司是力所能及的。
中型公司一般是 2 轮技术面试,第一轮成员骨干或者组长面,聊个大概水平和深度。第二轮总监或者技术经理面,聊聊项目或者技术。(一般总监不会参与编写Android代码,所以如果问技术,那么问网络相关的可能性最大)
- 有学历,有背景(履历不错)
- 有博客有亮点
- 掌握常见面试题(java & Android)
- 平时有记录项目中遇到的问题,并能解决
- 表达能力强
- 运气加成,问的都会
符合上述 3 点或者以上,进入中型公司应该不在话下、游刃有余。
怎么挤进一线大厂
腾讯、阿里巴巴、字节跳动、华为、美团、滴滴、百度 …
一线大厂一般有很多部门负责不同的项目,里面不乏知名大学毕业,技术大牛,往往在某一领域已经做到极致,有专门的团队负责某一功能点(性能优化、性能监控、中间件工具组件等),能投入人力物力去做好项目,并且薪酬福利可观,只是工作强度会很大。
在上家公司期间,有幸我们组有位中山大学毕业的小伙计,从他身上看到很多优秀的学习习惯和方法,在这里不得不承认比你优秀的人还比你努力,是什么能让他变得如此优秀?
-
多写多练,没有捷径 : 知识面广的人一定是不断积累形成的广度,一道难题他能解答,更多的可能在于 1. 这道题他做过 2. 做过相似的题型。 例如链表中环的检测,没有做过或者了解相似题型的人,是很难能够写出答案的,但实际上它并不难。
-
善于思考,系统性学习 : 例如网络编程 TCP / UDP 工作中接触的概率不大,大多数人都是冲着面试去学的,百度谷歌一下 TCP / HTTP 面试相关,知道有三次握手、四次挥手滑动窗口等,但很难把这些知识内容关联成网状结构,看了没多久又会忘得差不多。这里我建议系统性学习,从文档、书籍中更全面更系统地了解这些内容,加入到大脑的一个记忆分支中。
-
不要试水,一步到位 : 人都会有侥幸心理,抱着试试看的态度。编码、学习、或者是面试,没有一次性做到位的决心。事实上重构、重新开始、重新面试都会花费更多的时间。像大厂的面试周期都要半个月或者一个月,没有通过的话不仅浪费时间,而且这段时间心情复杂、焦虑、期盼。因此如果想面试跳槽,尽量一步到位、下定决心,把目标放高一些,进不了一线大厂也能找到一个好的公司。
这次换工作其实只面了两家公司:腾讯和字节跳动。 两家都是内推的方式,如果身边有大厂的朋友,建议内推试试,避免在 HR 这关被筛了简历。 说实话并没有能接受两家都黄了的心里准备,但如果现实残酷,我想我也能找到一家不错的好公司吧。
进大厂需要如何准备
说实话想挤进大厂需要 7 分实力和 3 分机遇,并不是每个部门每个面试官都那么强,也是会有人在大厂里摸鱼或者更多的负责管理相关(软技能强)。
因此我们要做的是不断积累,提升知识面的广度和深度,也就是提升自己通过的概率。
大厂面试通常会问答哪些问题呢?什么样的深度?
- 广度 : 其实提问的题型大多数能够谷歌或者百度到,或者平时编码能接触到,我建议可以通过整理面试题、整理市场上Android相关书籍目录,罗列出包括网络编程、java、Android都有哪些知识点, 先归纳,再系统性学习。现在网络发达资料齐全的时代,找信息找资料并不难,难的是将这些信息资料分门别类地整理,并消化它们。
网上的面试题或者学习资料,建议将它们作为复习目录大纲,每个点都需要找到相关书籍或者文档再深入研究。
下面举个网络相关的面试题,首先我们百度输入 android tcp 面试题, 找一篇文章看看
- 1.网络分层
- 2.TCP/IP五层模型
- 3.三次握手与四次挥手
- 4.TCP为什么三次握手不是两次握手,为什么两次握手不安全
- 5.为什么TCP是可靠的,UDP早不可靠的?为什么UDP比TCP快?
- 6.http协议
- …
- 10.https
掌握了上面这些网络知识,能通过面试吗?
很遗憾,并不一定能。
举个例子,大厂的网络编程面试题可能如下:
网络编程相关
TCP 三次握手的时间是多少 如何处理数据传输错误 TCP的可靠传输机制是什么 TCP传输的一个报文段有多大 说说滑动窗口和拥塞控制
深度大概如上所述(再深我也不会了…),如果单从网上的面试题或者零散资料去查去看,多数情况是回答不上的。这就需要有两手准备,通过书籍或者官方文档,系统性的学习 TCP / UDP / HTTP ,文章末尾我会有一些书籍文档推荐。
下面举java相关的
java
java 涵盖的知识点一般有: 线程与并发、JVM、集合
集合
HashMap 有哪些高效的运算,如何扩容
答:取key的hashCode值、高位运算、取模运算 当length总是2的n次方时,h& (length-1)运算等价于对length取模,也就是h%length,但是&比%具有更高的效率。可以参考美团的:Java 8系列之重新认识HashMap
线程
Synchronized 和 ReentrantLock 还有生产者消费者也是作为大厂高频的面试题出现,对于 Synchronized 他们问的会更深沉一些。不光要会用 Api , 也需要实现的机制是什么。
Synchronized 的 jvm 实现机制是什么 锁是什么,存储在哪里,包含哪些属性 wait 和 sleep 有什么不同,wait 和 notify 的机制是什么
ReentrantLock 的原理 (CAS + AQS) 公平锁和非公平锁的实现? AQS 核心功能原理分析,内部的数据结构是什么?
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
最后
为了方便有学习需要的朋友,我把资料都整理成了视频教程(实际上比预期多花了不少精力),由于篇幅有限,都放在了我的GitHub上,点击即可免费获取!
Androidndroid架构视频+BAT面试专题PDF+学习笔记
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
- 无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,这四个字就是我的建议!!
- 我希望每一个努力生活的IT工程师,都会得到自己想要的,因为我们很辛苦,我们应得的。
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,没有人能随随便便成功。
不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
无论你现在水平怎么样一定要 持续学习 没有鸡汤,别人看起来的毫不费力,其实费了很大力,没有人能随随便便成功。
加油,共勉。