写点什么

深度思考:已经开发 8 年的你,为何跳槽被多家大厂拒绝,androidstudio 物联网

作者:嘟嘟侠客
  • 2021 年 11 月 28 日
  • 本文字数:3670 字

    阅读完需:约 12 分钟

  • JVM DVM ART 的区别(360)

  • 描述 GC 机制。Class 会不会回收?用不到的 Class 怎么回收?(东方头条)

  • StackOverFlow 与 OOM 的区别?分别发生在什么时候,JVM 栈中存储的是什么,堆存储的是什么?(美团)

  • Java 虚拟机和 Dalvik 虚拟机的区别?

  • 请描述 new 一个对象的流程。

  • Java 对象会不会分配到栈中?

  • String, Stringbuffer, StringBuilder 的区别是什么?(东方头条)

  • String StringBuffer StringBuilder 在进行字符串操作时的效率;这里主要考察 String 在内存中是如何创建的。(字节跳动)

  • String 为什么是不可变的?(字节跳动)

  • String 为什么设计成 final 的?

  • final 、finally、finalize 区别。

  • 抽象类和接口的区别。

  • 重载和重写的区别 (京东)

  • 什么是值传递和引用传递,Java 是值传递还是引用传递?


算法和数据结构


主要知识点:


1.数组,链表,队列,栈,图


2.不会直接问你,会让你找到用处,比如 Activity 任务栈


3.算法


4.基本几种排序复杂度和思路


5.几种查找复杂度和思路


6.串的处理


大厂相关面试题:


  • 如何在一个 1 到 100 的整数数组中找到丢失的数字? 腾讯

  • 如何在给定的整数数组中找到重复的数字? 小米

  • 如何在未排序整数数组中找到最大值和最小值? 字节跳动

  • 在 Java 中如何从给定数组中删除多重复制? 百度

  • 常用的数据结构有哪些? B 站

  • 一个数组插入删除查找和链表的效率对比?如果一个数组要反复插入删除怎么优化降低时间复杂度? 腾讯

  • arrayList 底层原理 滴滴 字节跳动

  • 如何在一次遍历中找到单个链表的中值? 中国平安

  • 如何证明给定的链表是否包含循环?如何找到循环的头节点? 优酷

  • 两个有交叉的单链表,求交叉点 华为如何得到单链表的长度? 360

  • 如何在不使用递归的情况下逆转单链表? 小米/美团

  • 怎么判断链表有环? 滴滴

  • 如何使用栈实现队列的功能?广州荔枝 FM

  • 两个栈实现一个队列 蘑菇街

  • 两个队列实现一个栈 腾讯

  • 对比一下队列和栈,以及它们底部实现 腾讯


推荐 LeetCode 刷题和读《剑指 offer》。


性能优化


主要内容:


1.ANR


2.内存溢出


3.内存抖动


4.内存泄漏


5.UI 卡顿


6.冷启动优化等方面


大厂相关面试题:


  • 内存优化,内存抖动和内存泄漏。(东方头条)

  • Bitmap 压缩,质量 100%与 90%的区别?(东方头条)

  • TraceView 的使用,查找 CPU 占用(东方头条)

  • 内存泄漏查找 (酷我音乐)

  • ANR 查找

  • ANR 是什么,怎么解决?(美团)

  • CPU 波动

  • 当前项目中是如何进行性能优化分析的

  • 冷启动、热启动的概念(酷我音乐)

  • View 层次过深怎么优化,选择哪个布局比较好?(美团)

  • 怎样检测函数执行是否卡顿 (字节跳动)

  • 什么时候会发生内存泄漏?举几个例子(美团)


![](https://img-blog.csdnimg.cn/img_convert/7d16b23c1a1e54564f


《Android 学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享


849cb4ae3a138e.png)

学习 Android 路上的一些弯路(避坑)

在学习之路上,每个人都会走一些弯路,犯一些错误,前世之事后事之师,真心希望 Android 初学者不要重蹈我的覆辙。


1、在外包待的时间太久,外包学习投入的时间过多,技术上没什么长进


2、没有早一点接触互联网技术


3、没有早一点拥抱开源,Github 上有那么多牛逼的代码,多读,多写,然后就拼天赋吧。


4、不要妄自菲薄,技术上不自信,认为自己写不了牛逼的代码


5、不要闭门造车,多关注最新技术,提高眼界


6、尽量不要接收二手知识,比如能看英文就不要看翻译版了


7、不要惧怕大块头的书,像 thinking in Java,算法导论,一天掌握一点,一年也差不多掌握了 8 不要过早地做管理,先写个五年代码再说


8、Java 基础一定要扎实,虽然说并不需要首先精通 Java 才能上手安卓,但良好的 Java 功底确实会有很大的帮助。


有句话叫做基础不牢,地动山摇,大家可以制定一个安卓学习计划:


第一步:书籍


我之前入手的第一本书就是 android 疯狂讲义,七八百页,其实我感觉我们不用全部都学,比如说动画、视频、传感器先可以不学,安卓疯狂讲义的有些设计不是很合理,把很多难的内容放到了前面。


没有做到从易到难,我们学的过程中可以先把一章整体看一下,然后再安排学习的顺序,把里面的每一个例子都自己敲一遍。因为我上下班坐公交车时间很长因此我都是在公交车上看书,这样一个月过去了,疯狂讲义的主要部分学了一遍。


第二步:视频


我看过收集的视频也很多,每天看 7 个,中间也有耽搁的这样过去了一个月,所有的看了一遍,主要的,难懂的看了两到三遍。


第三步:高仿项目


做完前两步,自己感觉水平应该可以了,于是就想去独立开发一个 app,但是还是不知道怎么下手,于是从网上找了几个开源项目,开始模仿去做,有仿新浪微博,仿美团,闹钟,这样过去了一个月,终于有些底气了。


第四步:android 官网


要想去安卓官网还需要翻墙,这个大家都懂,首先官网上面的 api guide 看一下,最后都能仿着写一遍代码,然后再把 training 上的几个例子也仿着写一遍。这样学上面的例子用了一个月。


第五步:独立开发 app


开始设想独立开发一款 app。


Android 学籍推荐


我 Android 开发快八年了,做为一名过来人的角度,给大家推荐几本书籍。


Android 开发,目前主要是以 java/ kotlin 语言为主,学习 Android 之前,最好要先学习 java 语言。对 java 语法,基本数据结构有一定的了解。


Java


1.《Effectve Java》


2.《Java 编程思想》


3.《深入理解 Java 虚拟机》


Android


1.入门的话,主要推荐郭霖的《第一行代码》书籍,写得通俗易懂。


2.进阶推荐两本书籍《Android 内核剖析》,《Android 开发艺术探索》


C++


学习完 Android 的话,想进阶的话,还要学习一下 C++,没错,现在很多疑难问题都是 native 层的,只有学习 C++,才能成为一名真正的高手。


1.《深度探索 C++对象模型》


2.《UNIX 环境高级编程 第 3 版》

学什么知道了,怎么学呢?

做得越多不见得越厉害,而是对自己的知识体系做总结


我认为学习的阶段应该是这样的:


学习新知识--->灵活应用--->自我总结--->创造新知识


很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习,对此我针对 Android 程序员,我这边给大家整理了一套学习宝典


  • Android 学习路线图


首先,对于没有学习方向,知识不体系的人,我把我工作几年整理的学习路线分享给大家,做一个借鉴作用,还不知道怎么学习的人可以直接照着我这个学习路线一个个的去学习,知识不体系的人可以参考下我整理路线的方式,总之希望能够帮到你们!



  • 模块化学习资源


接下来是每个模块我整理出来的文档学习资料,帮助大家更细致化的学习。


《Android 汇总复习资料—Java》



《Android 汇总复习资料—Android》



《Android 汇总复习资料—Android 扩展》



《Android 汇总复习资料—Kotlin》



《Android 汇总复习资料—Flutter》



《Android 汇总复习资料—算法》



除了上面的学习路线,还可以额外的配合以下方式学习,效果翻倍~

Android 进阶学习

①看视频进行系统学习


前几年的 Crud 经历,让我明白自己真的算是菜鸡中的战斗机,也正因为 Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去 B 站进行学习,B 站上有很多学习视频,唯一的缺点就是免费的容易过时。


另外,我自己也珍藏了好几套视频,有需要的我也可以分享给你。


②读源码,看实战笔记,学习大神思路


“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 + 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。


主要内含微信 MMKV 源码、AsyncTask 源码、Volley 源码、Retrofit源码、OkHttp 源码等等。



③面试前夕,刷题冲刺


面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。


关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三:



④2020 大厂面试高频知识点


  • 图片

  • 网络和安全机制

  • 数据库

  • 插件化、模块化、组件化、热修复、增量更新、Gradle

  • 架构设计和设计模式

  • 性能优化

  • Android Framework

  • Android 优秀三方库源码


总结

最后为了帮助大家深刻理解 Android 相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的 24 套腾讯、字节跳动、阿里、百度 2019-2021 面试真题解析,我把技术点整理成了视频和 PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节


还有?高级架构技术进阶脑图、Android 开发面试专题资料?帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。





网上学习 Android 的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。


2021 年虽然路途坎坷,都在说 Android 要没落,但是,不要慌,做自己的计划,学自己的习,竞争无处不在,每个行业都是如此。相信自己,没有做不到的,只有想不到的。祝大家 2021 年万事大吉。


本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

用户头像

嘟嘟侠客

关注

还未添加个人签名 2021.03.19 加入

还未添加个人简介

评论

发布
暂无评论
深度思考:已经开发8年的你,为何跳槽被多家大厂拒绝,androidstudio物联网