-
多写多练,没有捷径 : 知识面广的人一定是不断积累形成的广度,一道难题他能解答,更多的可能在于 1. 这道题他做过 2. 做过相似的题型。 例如 链表中环的检测 ,没有做过或者了解相似题型的人,是很难能够写出答案的,但实际上它并不难。
-
善于思考,系统性学习 : 例如网络编程 TCP / UDP 工作中接触的概率不大,大多数人都是冲着面试去学的,百度谷歌一下 TCP / HTTP 面试相关,知道有三次握手、四次挥手滑动窗口等,但很难把这些知识内容关联成网状结构,看了没多久又会忘得差不多。这里我建议系统性学习,从文档、书籍中更全面更系统地了解这些内容,加入到大脑的一个记忆分支中。
-
不要试水,一步到位 : 人都会有侥幸心理,抱着试试看的态度。编码、学习、或者是面试,没有一次性做到位的决心。事实上重构、重新开始、重新面试都会花费更多的时间。像大厂的面试周期都要半个月或者一个月,没有通过的话不仅浪费时间,而且这段时间心情复杂、焦虑、期盼。因此如果想面试跳槽,尽量一步到位、下定决心,把目标放高一些,进不了一线大厂也能找到一个好的公司。
这次换工作其实只面了两家公司:腾讯和字节跳动。 两家都是内推的方式,如果身边有大厂的朋友,建议内推试试,避免在 HR 这关被筛了简历。 说实话并没有能接受两家都黄了的心里准备,但如果现实残酷,我想我也能找到一家不错的好公司吧。
进大厂需要如何准备
说实话想挤进大厂需要 7 分实力和 3 分机遇,并不是每个部门每个面试官都那么强,也是会有人在大厂里摸鱼或者更多的负责管理相关(软技能强)。
因此我们要做的是不断积累,提升知识面的广度和深度,也就是提升自己通过的概率。
大厂面试通常会问答哪些问题呢?什么样的深度?
- 广度 : 其实提问的题型大多数能够谷歌或者百度到,或者平时编码能接触到,我建议可以通过整理面试题、整理市场上Android相关书籍目录,罗列出包括网络编程、java、Android都有哪些知识点, 先归纳,再系统性学习。现在网络发达资料齐全的时代,找信息找资料并不难,难的是将这些信息资料分门别类地整理,并消化它们。
网上的面试题或者学习资料,建议将它们作为复习目录大纲,每个点都需要找到相关书籍或者文档再深入研究。
我也自己整理了一份面试题,以及相关的Android知识汇总
项目地址:Github
下面举个网络相关的面试题,首先我们百度输入 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 核心功能原理分析,内部的数据结构是什么?
可能会有人觉得这些应该是后端的事情,客户端很少会涉及多线程,即使要用,看一下 Api 文档能用就行。
实际上当你了解学习了 ReentrantLock 、AQS ,它们很可能会在后续的知识点产生影响,并且帮助你建立网状知识结构。
再说一个很实际的例子,线程池也作为高频的面试题,线程池中有阻塞队列例如 LinkedBlockingQueue , 重要的是 LinkedBlockingQueue 的实现机制就有 ReentrantLock ,而 ReentrantLock 又依赖 AQS。
这就呼应了上面我举的为什么这道难题他能答的原因 1. 这道题他做过 2. 做过相似的题型。
所以在刷面试题或者看书籍文档的时候,不妨换位考虑一下: 如果我是面试官,我会出什么样的题目看起来比较有深度?
算法
==
链表中环的检测 ,没有做过或者了解相似题型的人,是很难能够写出答案的
上面说的这句话是很有事实依据的,前Google工程师王争在他的课程里也有提到:
对于算法,多写多练,总结复盘,除非要你去做推荐算法或者人工AI大数据计算,否则Android面试官不会为难你,只会考察一下算法的基本功,代码编程能力。
我总结了下,常规的算法数据结构大概有以下 5 种,你可以选择一招鲜吃遍天,把它们死啃下来。当然,当你开始入门并上手算法题,也会从中找到乐趣和成就感。(这道题我只要 O(1)时间复杂度!不需要额外空间!给你们看看我的题解)
-
数组与矩阵
-
链表
-
栈和队列
-
字符串
-
位运算
哪有什么天生如此 只是我们天天坚持
书籍/文章推荐
网络相关
====
《计算机网络》(第七版) – 谢仁希 这本书可以看 第五章-运输层, 系统性的学习 TCP/UDP 协议
HTTP 相关的可以看看我的专栏: HTTP系列,面试必备悔无早学 或者订阅极客时间的课程: 透视HTTP协议
Android
=======
Android 涵盖点比较广,建议以官方文档为主 : Android 开发者指南 ,官方文档很详细并且几乎覆盖所有的 Api ,如果你想学习Jetpack, 也建议从官方文档入手 Android Jetpack ,比大多数博客更权威,是一种不错的知识和资源获取途径。
可以把 Android 分为以下几个大纲
-
Android 基础Api : RecyclerView、Handler、Jetpack…
-
Android 系统源码 : Activity源码、View绘制机制、事件分发机制、Window机制、AMS、WMS、PMS、Binder。
-
Android 第三方库 : Okhttp、Glide、EventBus、ARoute等
-
Android 性能优化 : 卡顿、内存、启动、崩溃、安装包、ANR…
按照上面大纲展开拓扑结构学习,最终形成知识大网。当然每个知识点都需要深入探索
Android 系统源码 可以尝试看看我的Android源码专栏 《Android源码分析系列》 ,不仅有源码分析,而且有关联有总结,容易形成网状知识结构。
Android 性能优化 大卫老师的 Android开发高手课 , 作为应用的性能优化可以说是一门相当优秀且卓越的课程。
算法
==
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
最后
题外话,我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多程序员朋友无法获得正确的资料得到学习提升,故此将并将重要的Android进阶资料包括自定义view、性能优化、MVC与MVP与MVVM三大框架的区别、NDK技术、阿里面试题精编汇总、常见源码分析等学习资料。
【Android思维脑图(技能树)】
知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。
【Android进阶学习视频】、【全套Android面试秘籍】
希望我能够用我的力量帮助更多迷茫、困惑的朋友们,帮助大家在IT道路上学习和发展
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。
[外链图片转存中…(img-GFlObyWs-1712760630567)]
【Android进阶学习视频】、【全套Android面试秘籍】
希望我能够用我的力量帮助更多迷茫、困惑的朋友们,帮助大家在IT道路上学习和发展
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-nLFpR29d-1712760630567)]