2021字节跳动,金三银四内幕Android中高级面试题合集-令人细思极恐!!!

前言

一眨眼又到年底了,每到这个时候,我们都会慢慢反思,这一年都做了什么?有什么进步?年初的计划都实现了吗?明年年初有跳槽的底气了吗?

况且2020年我们经历了新冠疫情的洗礼,很多程序员都经历了失业,找工作的恐慌。导致今年的互联网环境太差,需要自己有足够的知识储备,才能够应对这凌冽的寒风。

本文主要是整理了中高级Android需要会的(或者说面试被频繁问到的内容), 主要作为参考大纲,之后会陆续更新每个详细部分,供大家参考,互相学习。

面试参考大纲知识图谱

2020面试题精选分享

腾讯面试题分享

一面 42min 电话面试
  • 项目经历,开发中遇到什么问题,最后怎么解决的
  • TCP三次握手,拥塞控制
  • 一面更多的是聊项目,面试官没有问太多基础的知识,面试官主要是在我介绍自己项目的时候切入问问题,整个过程氛围很开心。
二面 45min 视频面试 3.21
  • 安卓的设计模式有没有了解,工厂模式之类的
  • IPC,多线程
  • hashmap相关
  • 扩容因子
  • hashmap与hashtable区别
  • hashmap重写了equals方法但是不重写hashcode方***怎么样
  • haspmap查找的时间复杂度,可不可以优化
  • 我说把链表改成双向链表,还可以改成avl树,b树,b+树,减少查找的时间复杂度。
  • 计网三次握手,四次挥手
  • 两道算法
  • 一个简单博弈问题,两个人分别选择最大的数直到选完,求最后两个手上数的和之差,实际上是排序就行了,重点在排序算法的选择,可以直接用C++的sort函数,我自己手写了归并排序来用。
  • 提供一种大小为N的CD,还告诉你有两种大小A,B的歌,每种歌的数量也告诉你为x,y,往CD里放歌,尽量利用CD的空间能放多少放多少,每首歌不可拆分放,可用的CD总数不限,求有多少种排列方式。最后理了思路,就是用递归就行了。
  • 项目相关,开发中遇到的问题及解决办法
  • 问面试官问题,问的是面试官您认为哪些能力是更重要的,面试官说是基础更重要——数据结构,计网,算法。
三面 2h10min 视频面试 3.25
  • 操作系统相关知识
    • 栈内存,堆内存
    • 进程,线程
    • 竞争
  • 计网
    • TCP三次握手
    • TCP拥塞控制
    • 浏览器访问网址,具体发生了什么
    • DNS协议怎么工作的
  • 安卓相关知识
    • activity生命周期
    • 为什么要有任务栈,任务栈有什么作用
    • viewholder的作用
    • view绘制过程
    • view,window和activity之间的区别
    • OOM什么情况会发生,怎么解决
  • 两道算法题
    • a[100]中逐个填1~100的随机数,且不能重复
    • 大数相乘
  • 项目经历,开发中遇到的问题及解决办法
  • 谈谈你的优点
  • 你之前腾讯面试失败,是为什么,那两道题为什么没做出来
    • 那道题是输入一个字符串,从中删除n个字符,剩下的字符构成回文串,求n的最小值,确实难;另一题是无权图中两点最短路径,思路很简单就是BFS
  • 最后问问题环节
    • 第一个问题问的依旧是,面试官您认为哪方面的能力或者是能力更重要,面试官说基础,操作系统,计网,数据结构算法这些。其实我的操作系统真的不够好,这次面试最大的问题就是这个了。
    • 最后问了面试官才知道,是QQ部门的。。。
阿里巴巴

#####电话一面

  • 起手式:自我介绍
  • 介绍下简历上的项目
  • 线程池的使用,线程池如何实现的,线程池的原理
  • Thread 的join 函数的作用
  • java 线程间通信的方法有哪些
  • Android handler 机制,源代码
  • juc atomicInteger 类为什么能保持线程安全,普通的变量为什么不能保证线程安全
  • java 内存模型(问了我有没有阅读过JSR 133的官方文档?并没有,很惭愧,感觉学的路子有点野)
  • java 内存分区
  • concurrentHashMap 的原理
  • 100以内,10万以内,10万到无穷个数,三种情况排序,选择排序算法
  • 你有什么要问我的?(问了一些技术相关的问题)

一面是在过完年后回实验室第一天就面了,过了年,很多知识都忘记了,回答得比较一般,所以码代码这事儿,真是和医生的手术刀一样,要天天摸着才是好。

电话二面

一面和二面隔得确实比较久,期间让老同学帮我查了进度,所以喊我再等等。三周后,迎来了阿里二面。二面的面试官是手淘的负责人,面试中给人一种感觉是比较开放,自由的,感觉到了一种高水准技术流派的画风。

  • 愿意不愿意来杭州
  • 自我介绍
  • java的gc(gc工作原理,gc回收机制,gc内存分配)
  • http和https区别
  • http报文结构
  • http 报文头部含有什么
  • 你最拿手的项目是什么(回答了和同学做的开源项目,并且介绍了如何做的)
  • 手写代码:跳台阶问题
  • 你有什么问题要问我吗?
电话三面(有点忘记了)

三面是淘宝技术部的老大,整个人感觉思维缜密,对细节很注重。

  • 自我介绍
  • 问项目,问有没有看过项目里面的底层源代码
  • Nodejs 到了什么水平,大致说下对Nodejs的理解
  • 你有什么问题要问我吗?
电话交叉面

交叉面是阿里北京部门的,当时接到面试电话的时候,还是有点惊讶,没有做好交叉面的准备,感觉交叉面就面得不那么理想

  • 自我介绍
  • SS助手是什么项目,大致说下
  • 有实习经历吗
  • 白盒是个什么概念?白盒的安全性依靠什么保证?白盒可以用于网络流传输吗?
  • ImageLoader的框架,淘宝app图片的缓存设计方案(没有回答上来)
  • 你有什么问题要问我吗?
hr面

风景如画的小姐姐,说话很温柔,问了些和生活,个人规划相关的问题。

  • 你对阿里面试官的印象如何?你从面试官上学到了哪些东西
  • 你每天的生活安排是什么样子的?
  • 你为什么选择来阿里?
  • 阿里的开源框架用了哪些呢?说说weex?
  • 你以后的技术规划是什么样的?
  • 你最有成就的项目是哪个?
  • 为什么选择android开发?
  • 为什么选择nodejs开发作为第二条技术路线?
  • 你有什么要问我的吗?(问了面试官入职培训)
今日头条

一面:
  • 协变

  • 线程间通信?有几种同步/加锁方式?

  • 进程间通信?答了三个只知道概念的和安卓的AIDL。

  • 又问这“三个”中任选一个阐述原理

  • hashCode()方法实现

  • hashCode()方法 equals()方法相互联系?

  • ActivityA启动ActivityB,两者的生命周期分别是怎样的,是顺序执行的吗?

  • 用过哪些框架,答曰RxJava,Retrofit,Realm,问哪一个熟悉一点?都不太熟……就随便挑了一个OKHttp来问:http请求中keep-alive保存长连接的实现原理是怎样的?

  • LRUCache原理,如何实现?

  • 手撕代码,股票买入买进最佳时机,LeetCode上原题(有6道变形)

  • 二分查找,写的递归,要求转成循环方式

二面:
  • 内部类和外部类有什么区别?

  • 静态内部类和非静态的有什么区别?

  • 内部类为什么可以访问外部类的变量?

  • 垃圾回收:如果两个变量互相引用是否还会回收它们?为什么?

  • 标记整理算法是怎样的?为什么要前挪整理?

  • HashMap不是线程安全的,那么用什么替代?(本来是知道的,结果我多问了一句傻话面试官就跳过这个问题了……

  • (因为项目提到)Realm版本管理?更新表?

  • CoordinatorLayout与通常的FrameLayout和RelativeLayout相比有什么特点

  • View的绘制过程

  • (这次面试电脑麦克风出了问题 在手机面的)草草问了一下跳台阶问题

三面:
  • (因为项目提到)SurfaceView的特点?了解相关的TextureView吗?

  • HashMap的结构是怎样的,怎么存value,遇到相同的hash值的key,其value又怎么存。

  • 手撕代码,想第二种解法,想第三种解法;

  • 用快排来解决这个问题,优化,再优化。

  • 有什么想问的?问建议学习路线,面试官建议就死磕官方源码就好,开源库的源码也多看。看不懂看别人解析也可以。


总结:面试和必备的技能

这里只简单列举一些东西,可能不是特别全,但是却特别适用,也不一定按照下面的流程,有可能是穿插的,也有可能都有,根据公司的规模以及面试官的心情而定(哈哈哈 ,你们就自求多福吧)。建议大家还是要将下面的东西全部掌握,没事写写代码,练练手,在项目中能用到的地方一定要用,有可能会遇到很多坑,一定要自己想办法填坑,之后回忆起这段经历,肯定可以敢理直气壮的跟别人讨论。如果你说的头头是道,那么对方会先输一层,然后在心里对你佩服。

1.一般情况下第一轮都是基础面试,需要扎实的基础

  • 最常用的Android 基础知识
  • Java 基础知识
  • 了解一些 常用东西的原理,例如:handler, thread 等
  • 项目中的技术点

2.第二轮的时候需要了解更深层次的东西

  • Android 事件分发机制原理
  • Android 绘图机制原理
  • WindowManager 的相关知识
  • 进程间传输方式
  • Java 内存管理机制
  • 一些常用的 list,map 原理,以及子类之间的差别

3.能进入第三轮基本没什么问题,但是要注意以下问题

  • 该轮一般是 老大或者部门负责人,问的问题一般都看 深度与广度
  • 当问及薪水的时候,要说一个合适的,小公司随意,大公司一定要慎重,当心里没底的时候,可以告诉对方,让对方给一个合理的薪资。一般都是在原工资基础之上增长,听猎头说一般涨幅都在15%-30%,超 NB 的可以要30%及以上,如果感觉自己还不错的,挺厉害的,建议最高20%,一般人就定在15% 左右最靠谱。公司内部一般有一套机制,根据公司情况而定。
  • 我们的面试原则就是拿到合理薪资,得到 offer
  • 个人发展情况,这个问题很难回答,如果和公司方向不符合,极有可能和公司无缘。建议多试探性的问问公司缺少什么,你能否给予公司对应的东西。当然对于有自我追求的人,那可以放心大胆的提。我的方向就是架构师,哈哈哈,挺极端的,别学我哦。我感觉选择都是双向的,因此我知道自己需要的是什么。
  • 你最擅长什么UI 还是其他什么?这个问题更不好回答。你要说你擅长 UI,是不是意味着你其他能力就不行?虽然我不知道面试官的用意,但是我能感觉到,这个问题不是那么好回答,我会回答说自己都行,来什么业务接什么需求。可能回答不太好,总之和公司的职位吻合就行,这样总不至于出错吧。

尾声

每个程序员朋友都有自己的架构师梦,可往往梦想是美好的,现实又是残酷至极的。不努力不奋斗,可能就会在基层一辈子止步不前。也许有很多朋友还会说,程序员也是干的年轻饭,年纪大了也就爬不上了,脑子跟身体都跟不上了。那既如此,又为何不趁着自己还年轻,好好把握机会,努力一把,美好的未来才有机会和你招手!当然咯,这也仅仅代表我个人的观点,毕竟一百个人有一百个不同的脑子,就会有成千上万种不同的想法。

不过,只一句,如果你还在做这一行,还是一名程序猿(媛),想走上坡路的你,也许我这到手的学习进阶笔记 可能会对你有所帮助。

《Android高级架构师面试指导+2020大厂面试真题》


四份大厂面试题(基础+中高级+HR面)+面试指导2537页 合集

更多学习视频

以上进阶BATJ大厂学习资料可以全部,全部,全部免费分享给大家,需要完整版的朋友,【点这里可以看到全部内容】。
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值