美文网首页Android技术知识Android开发Android开发经验谈
靠着这份大厂Android架构师学习笔记(附系列视频+学习路线)

靠着这份大厂Android架构师学习笔记(附系列视频+学习路线)

作者: jett老师 | 来源:发表于2020-12-24 14:22 被阅读0次

    Github作为程序员们的后花园,一直以来都是程序员最喜欢逛逛、学习的地方,小编也不例外,最近看到一份对标阿里、头条、拼多多等Android核心架构笔记,已经标星15+K了,很是惊讶,看了一下,觉得知识点整理的非常的详细,也不愧能获得这么多星,资料已被整理好,发放福利给朋友们!


    点赞后,然后评论区评论关键字 “666” 即可获得《对标阿里、头条、拼多多等面经知识点合集整理笔记》PDF版文档资料的免费领取方式。

    从社招和校招两个⻆度来举例⼦吧! 我下⾯的两个例⼦仅供参考,⾃我介绍并不需要死记硬背,记住要说的要点,⾯试的时候根据公司的情况临场发挥也是没问题的。另外,⽹上⼀般建议的是准备好两份⾃我介绍:⼀份对hr说的,主要讲能突出⾃⼰的经历,会的编程技术⼀语带过;另⼀份对技术⾯试官说的,主要讲⾃⼰会的技术细节和项⽬经验。

    面试前得搞清楚技术⾯可能会问哪些⽅向的问题

    你准备⾯试的话⾸先要搞清技术⾯可能会被问哪些⽅向的问题吧!

    配套学习资料(全部都可以领取!免费分享记得点个赞哦给文章)

    觉得资料不错的,免费分享哦,记得一键三连。点赞+评论666 即可获取所有学习笔记!
    自行下载直达领取链接:【点击资料下载

    BATJ Android社招面经 高频经典题目(精选)

    一面
    • 为什么想换公司?

    • 在开发中遇到的最大的困难?怎么解决的?

    • 接口和抽象类的区别,一个类的能不能多继承,能不能实现多个接口

    • 接口类的非方法能不能被修改?不能,接口类里非方法的类型都是final修饰,所以必须初始化并且不能被修改。

    • 抽象类的变量可以被继承和修改么?可以。

    • final关键字

    • GC如何标记要回收的内存?GC Roots有哪些?

    • 线程安全问题,sychronized、lock/unlock的区别使用,公平锁和非公平锁的概念。

    • sychronized是如何体现公平锁和非公平锁的(CAS、锁自旋)?

    • HashMap原理,在什么时候扩容(当加入的元素大于阈值threshold后)。 以及线程安全的HashTableConcurrentHashMap的原理。

    • View的事件分发

    • 布局优化怎么做的?LinearLayout和RelativeLayout在性能上的区别。

    • WebView的优化,如果出现了数据的交互该怎么做?(AIDL),Binder怎么实现进程间通信的?mmap的模型?

    • 内存优化?RecyclerView的缓存机制,如何优化?

    • 项目中的联网模块怎么实现的?UDP和TCP的区别?

    • TCP会检查包的顺序么,Tcp怎么控制包的发送(滑动窗口)。

    • 看到项目中使用了WebSocket,讲下它和Http的区别?

    • RxJava的操作符?项目中是如何使用RxJava的?

    • 快速排序和冒泡排序的稳定性问题

    • 编程题:将一个分数转化成小数形式输出,因为分数只可能是有限小数或无限循环小数。如果小数是无限循环小数,则使用小括号括起。

    • 这题思路是做while轮除。我界定是否产生了无限循环小数是使用HashTable。

    • 对我们公司了解多少?有什么想问的?

    二面
    • 为什么想要离开当前的公司
    • "abcde"字符串在内存中占多大,这些字节在JVM的编码格式
    • JVM堆和栈的作用,进程和线程的作用,堆栈和线程进程的对应关系
    • 死锁怎么产生?如何去解决死锁,多个方案
    • 线程同步问题,自增是原子操作吗?如果要做到线程安全的自增要做怎么做?
    • 快排的过程,时间复杂度,n*lgn是如何得来的?
    • Http是在哪一层,Https使用了非对称加密还是对称加密?TCP和UDP的区别,为什么UDP不可靠还要使用UDP
    • 拥塞控制和流量控制的区别
    • 智力题:给一篮子鸡蛋,如何用最少的比对次数找到最大的和最小的鸡蛋, 我的回答是 一开始,随便拿出两个鸡蛋,然后接下来剩下的鸡蛋每拿出一个,就和这两个进行比较,如果比两个中小的鸡蛋小就替换小的那个,如果比大的鸡蛋大就替换掉大的那个,这样比较次数就是 (n-2)2 ,因为有些鸡蛋只用比一次就行了(因为是最小的就不用往大的比了),所以结果是小于 (n-2)2的,但我觉得应该还可以更加快....
    • 编程题,排序二叉树的插入,如果插入相同的数,需要做什么保证树可以还原(即不允许丢弃到相同的数)?
    • 有什么要问的?
    三面
    • 两桶油漆,A桶全是红色油漆,B桶全是蓝色油漆,将A桶中取一勺倒入B中,再从B桶中取一勺倒入A中,求A桶的蓝红比例和B桶的红蓝比例,是大于、小于还是等于?
    • 用一个数组实现一个循环队列
    • 给定一个只有“R”“G”“B”三个字母的字符串,用一次遍历基于原字符串将他们以“RGB”的顺序排序好(LeetCode原题)
    • 52张扑克牌,取一张不放回,再取一张, 两张为相同颜色的概率是多少?
    hr面
    • 自我介绍
    • 为什么选择计算机这个专业
    • 为什么要离开当前的公司
    • 你是深圳的,为什么会选择在东莞工作。
    • 在上一个公司学到了什么
    • 选择公司因素,按优先级排个序
    • 用三个关键词描述自己
    • 代入用户思维和不代入用户思维做产品有什么区别?
    • 家庭情况,有没有女朋友?
    • 你觉得一个好胜心过强的人会有什么样的问题?
    • 你会想在团队里面承担一个什么样的角色?
    • 平时的爱好是什么
    • 有没有给自己制定一些计划?对自己的要求有多高?
    • 学习的渠道、方式,有GitHub吗?看什么样的书?
    • 学习是基于公司项目学习,还是个人兴趣学习?
    • 预计到岗时间,期望薪资
    • 反问环节

    总结一下,技术面环节主要考项目 和Java基础、编程题要注意规范和思路是否最优。


    BATJ Android校招面经 高频经典题目(精选)

    一面

    0、自我介绍

    1、handler机制,sendMessage和post(Runnable)的区别。

    2、ThreadLocal原理,底层实现

    3、HashMap底层,扩容,LinkedHashMap

    4、Service的onBind和onStart差别

    5、Activity启动生命周期,A跳转B

    6、Android持久化方案,SharedPreference是否可以跨进程通讯。ContentProvider

    7、ClassLoader机制,双亲委派。如果我要写一个Activity类,那怎么保证加载的是我自己写的Activity

    8、算法题,约瑟夫环

    9、反问

    二面

    0、自我介绍

    1、项目技术点详解

    2、写过什么自定义View

    3、OkHttp代码看过吗,用了什么设计模式

    4、MVC、MVP区别,项目中的实现。

    5、LiveData和EventBus的相关讨论,真的是讨论,畅所欲言

    6、看过哪些源码

    7、SharedPreference相关

    8、Android动画了解吗,用过什么

    9、TCP、UDP区别,面试时的语音用的是什么,为什么要这么用。

    10、代码题,5个线程对一个int进行累加到1000.

    11、反问

    三面(50mins):

    0、自我介绍
    1、算法,跳棋盘
    2、浏览器输入URL到渲染全过程
    3、Http请求报文响应报文
    4、http2.0有哪些优化
    5、用过哪些网络库
    6、OkHttp的Intercepter
    7、Android持久化方式
    8、Java线程同步的数据结构
    9、反问

    社招和校招面试技巧总结

    经过了这你年的磨砺,除了硬实力之外,有一些需要自己注意的技巧分享出来:

    1、简历不要投太早,容易因为太久没被处理导致心态崩溃。因为我之前2月底投了一波,但是那时候很多厂简历筛选工作还没开始,搞得自己无名焦虑,头发又少了。

    2、不要给面试官一种你在背知识点的感觉,要结合实现进行分析。我这里有一句话:数据结构决定算法、算法决定数据结构。就拿TCP举例,你要是遇到TCP的头部结构有什么的问题,是不是就懵了,觉得这是靠背诵的。但是你套上这句话,联想一下知识点:SACK确认机制、滑动窗口、全双工通道、套接字结构……是不是就能够理解为什么需要那些头部结构了,都是有对应的功能需要实现才会出现这些结构的。遇事不决拿结构分析。

    3、多看源码,源码里面有很多注释,很多时候看看注释就知道这个类是干什么的了,然后再往下跟,会有助于自己理解逻辑。更重要的是让面试官知道你这种跟源码的学习方式。

    4、调整好心态,不要因为某些厂把自己挂了就觉得自己不行。这是我被挂多了之后的心得,此处不留爷自有留爷处。

    5、面心仪的公司之前先面几家其他公司,小公司或者同等体量的公司。

    6、面试一次复盘一次,整理自己发挥不好的点。不能说一次问你不会两次问你还不会吧,那不是能力问题,那是态度问题。而且很多厂是有面试记录的,二三面转挑你面试不好的问题问你。

    7、表现自己对于计算机、码代码的热情以及愿意钻研的精神。这里说的热情不是让你自我介绍的时候说喜欢码代码,而是不经意见透露一些。比如有维护个人博客、比如一直在维护个人github、比如在遇到问题的时候提了各种解决方案最后根据某种选择策略决定了最终方案、比如最近遇到的问题以及现在解决到了哪一步……

    解读大部分程序员在面试前需要了解的一些问题?
    自行下载直达领取链接:【点击资料下载

    尾声

    当然上面讲的都是技术方向上的发展,当然对一些技术栈水平和技术积累到一定程度后你也可以往技术管理和产品方向发展,当然你也可以选择创业,如果你有足够好的idea和心理准备。

    当然大部分人停留在中高级水平,然后一直停滞不前,加上外部各种环境,产生了各种焦虑,所以很矛盾,这时候你最好的状态是快速往高级水平发展,当然这里是比较难的,这个坎也是比较难迈过去的。因为Android知识体系比较庞大和复杂的,涉及到计算机知识领域的方方面面。

    但是只要坚持,让自己成T字形人才发展,时间会证明一切!!1

    B站Android重点难点进阶学习视频

    满满诚意:【实战MVVM和Jetpack的完美结合让页面开发不再烦恼
    1.什么是插件化
    2.插件化能解决的问题及与组件化的区别
    3.常用插件化框架对比
    .
    .
    .
    13.手写实现插件的资源加载

    点击配套【设计思想解读开源框架】学习笔记,学习路线获取!

    相关文章

      网友评论

        本文标题:靠着这份大厂Android架构师学习笔记(附系列视频+学习路线)

        本文链接:https://www.haomeiwen.com/subject/kbdmnktx.html