前言

我是2020年毕业于中南大学的计算机学院的,大家可以叫我小吴,我嘞毕业之后在华为实习了差不多一年多,一直都从事着Android开发。 然后2021年的时候因为我自己的一些原因打算离职到外面看看,那个时候我是投了超级多简历,然后去面试了小红书啊、快手啊,爱奇艺啊,微信,小米…等等很多的大厂,小厂然后下面这些嘞就是我和我同学每次面试后记录的一些面试官问我们的问题(ps:基本上特别的全面),我总结了一些给大家看一下。

简单粗暴的说:用最少的时间,最高效率,让你清楚:想要拿到Android工程师 offer你就要好好的看了

小红书 Android开发工程师

一面

  • Java方面
  1. 静态变量和实例变量的区别
  2. 静态变量有static关键字修饰
  3. 静态变量不属于某个实例对象,而是属于类,也叫类变量,只要程序加载了类的字节码,不用创建任何实例对象就会被分配空间,就可以被使用,也就是说,你创建了多个对象,他们共用了一个静态变量,而实例对象是属于自己的独有的,不会被共享!(可以Class.var使用),位于方法区
  4. 实例变量必须创建对象后,才可以通过这个对象来使用。即new Class().var,位于堆区
  5. “==” & equals()
  6. 浅拷贝 & 深拷贝
  7. HashMap , 扩容机制
  8. 多个线程如果共享多个资源,需要怎么保证安全
  9. volatile,CAS/ABA
  • Android方面
  1. 事件的分发机制
  2. Handler原理
  3. TCP UDP
  4. Kotlin和Java的区别

快手 Android开发工程师

一面:

  1. 一个平面上n个点,找出k条线穿过max点数
  2. 100位面试者,每人要四轮面试,怎么分配面试官

二面:

  1. 手撕:最长单调区间
  2. Android/ 布局优化
  3. Activity启动模式
  4. RecyclerView和ListView区别
  5. Handler机制,loop方法为何不会造成ANR
  6. View绘制流程
  7. SingleTop和standard启动模式下,生命周期回调有何不同
  8. onStart和onResume区别
  9. Java/ 面向对象三大特性
  10. Array和Linked区别
  11. HashMap底层
  12. 进程间通信方式
  13. equals和==区别
  14. 线程间加锁的方式
  15. 知道啥设计模式
  16. synchronized的不同使用
  17. 异常
  18. 线程池
  19. 创建线程的方式
  20. OS/ 死锁
  21. 网络/ tcp和udp的区别

微信视频号安卓工程师

Android方面:

1、讲一下Android发生Crash的整体流程。Android在遇到非可检异常时就会触发该线程的 unCatchExcepttionHandler中的unCatchException()方法,最终在该方法的 process.kill()方法中杀死该进程,appCrash完成。

2、Native层Crash是如何捕获到的?Android NativeCrash发生时会向该进程发出错误的不可处理信号,Linux系统收到该信号后无法处理便会杀死进程,发生Crash。Android当中捕获的方法主要是使用了Linux系统下的核心转储机制,在发生Crash前系统会记录下当前的上下文信息,形成tombstone文件,存储起来,再杀死线程,这个tombstone文件就是我们要分析的对象。

3、Java层Crash是如何捕获到的?JavaCrash的捕获有几个关键部分

4、RuntimeInit类中的LoggingHandler类,用于打印日志时使用

5、RuntimeInit类中的KillApplicationHandler类,是一个系统默认的 UncaughtExceptionHandler,用于发生JavaCrash时kill掉进程

6、RuntimeInit类中的commonInit方法,其内部就是初始化了所有线程的set UncaughtExceptionHandler()。因此在发生非可检异常时,就会调用该线程的
UncaughtExceptionHandler.unCatchException方法,在该方法内部进行捕获。

7、如何做到发生异常时不会杀死APP?在 
UncaughtExceptionHandler.unCatchException方法调用Looper进行死循环可以。

8、讲一下Handler机制

9、Looper的定时器是用如何实现的?通过nativePollOnce(ptr, nextPollTimeoutMillis);定时睡眠nativeWake(mPtr);进行唤醒

10、APK包里有什么?主要有5个部分:

dex文件:.class文件编译后的产物

Assets:资源文件,如图片等,主要是通过AssetsManger来进行加载。

Resource:资源文件,layout等,通过R.xxxxxx.id来进行引用

Library:so库引用目录

META-INF:APK 签名有关的信息

11、APP在运行时是通过什么来获取到layout文件的?

12、讲一下surfaceview跟textview。

13、Activity A 启动 Activity B 时,他们在同一个栈的情况下生命周期以及执行顺序是怎么样的?

14、Destroy()方法是什么时候调用的?

15、调用finish()方法。

16、Handler中已经没有要处理的message。 满足这两个条件才会调用。

Java方面:

  1. 有什么线程同步的机制?
  2. volatile关键字讲一下。
  3. volatile如何实现可见性?
  4. synchronize如何实现可见性?
  5. volatile防止指令重排代码级别如何实现?

操作系统的理解:

  1. 讲一讲操作系统内核态跟系统态的了解。
  2. 操作系统内核是什么?
  3. 操作系统内核本质上就是操作系统代码的常驻机构。
  4. 操作系统内核就是管理所有代码和数据结构的集合。
  5. 操作系统内核是软件和硬件之间的媒介。
  6. 为什么操作系统要有内核态、系统态的存在?
  7. Linux有什么信号?
  8. sigill信号在什么情况下会触发?

算法题:

  1. 给一个数组,每个值表示的是在坐标系中的点下标,找出该数组在组成的最长直线为多少,相同最长长度直线有几条?
  2. 给一段数字,给出其可能组成的所有IP地址。

小米 android开发

  1. http与https的区别。
  2. Java构造器工作工程。
  3. Java中的引用类型有哪些。
  4. http,http1.1,http2.0有啥区别。
  5. TCP/IP最大容量的意义是什么?
  6. 还有Integer与int类型区别?各自怎么比较大小?
  7. 还有垃圾回收机制还有final的用法
  8. 为什么HashMap在1.8中采用了红黑树?你能说下啥是红黑树吗?啥是平衡二叉树?啥是二叉搜索树?啥是满二叉树?
  9. Java1.7采用数组加链表与1.8采用红黑树有啥区别?
  10. HashMap 线程不安全原因是啥?分版本作答
  11. 如果线程安全的话 要用哪个?我说Hashtable。他说HashTable效率太低,怎么安全又效率高?
  12. 对称加密与非对称加密?
  13. SSL是干嘛的?

美团app android开发工程师

一面

  1. jvm内存模型
  2. new 对象的过程
  3. 类加载过程
  4. ClassLoader源码
  5. final关键字
  6. 匿名内部类
  7. 讲下垃圾回收算法
  8. LinkedList && ArrayList
  9. hashMap
  10. 常用注解,spring中的注解
  11. 锁,synchronized底层原理
  12. https && http
  13. 浏览器输入地址后的过程
  14. 状态码 303 304
  15. 你知道的设计模式
  16. 单例模式 说了双重校验锁,静态内部类 ,不同场景下如何选择
  17. 双重校验锁为什么要两次判空
  18. volatile,指令重排

爱奇艺 Android开发工程师

一面:

  1. 介绍项目
  2. Android布局嵌套深有什么问题
  3. kotlin协程
  4. HashMap原理
  5. 算法:手写快排

二面:

  1. Activity启动模式
  2. Activity A → B的生命周期在这四种启动模式下的状态
  3. 广播类型
  4. 有序广播如何实现的按顺序收到广播
  5. 持久化存储方式
  6. SharedPreferences的格式
  7. xml解析方式
  8. json与xml的区别,json为什么比xml更好
  9. Android view绘制流程
  10. surfaceView
  11. sp, dp, px的区别
  12. 机型大小适配
  13. 适配语言
  14. ANR 什么时候出现,如何排查
  15. Android动画
  16. startService与bindService的区别
  17. Service保活方式
  18. java泛型,<? extends T>能否add元素
  19. 重写equals方法需要重写hashCode方法吗
  20. ThreadLocal
  21. wait,sleep,yield,join的区别

算法1:

  1. 字符串全排列

算法2:

1、删除链表中倒数第n个节点

字节跳动旗下的抖音短视频Android开发工程师

一面:

  1. 项目
  2. volitale与synchronized的区别
  3. 手写单例
  4. 匿名内部类如何持有外部类对象
  5. 内存泄漏的概念
  6. 内存泄漏的场景
  7. 内存泄漏检测的工具
  8. handler原理,sendMessage与sendMessageDelay如何保证Message放入MessageQueue中的顺序
  9. 两个Message相隔5秒,这5秒内线程会一直阻塞吗
  10. 自定义 View如何特殊处理wrap_content,padding的实现
  11. MVVM和MVP 的区别(引出了一系列问题,不是很了解就直接说不了解比较好)
  12. LiveData与RxJava的区别
  13. LiveData生命周期感知如何实现
  14. 介绍RxJava
  15. https与http的区别,中间人如何修改密钥
  16. 算法:二叉树z字形打印

二面:

  1. 项目
  2. final、finally与finalize的区别
  3. java开启一个线程的方式
  4. Thread.start()与直接调用run()的区别
  5. Java默认提供了几种线程池
  6. thread{ i++ }执行10次结果,如何让i最后等于10
  7. synchronized与reentrantlock区别
  8. 死锁
  9. 悲观锁乐观锁
  10. gc垃圾回收
  11. 垃圾标记阶段,Python如何实现的断开循环引用
  12. Retrofit返回的是什么数据类型
  13. 服务器返回的数据有哪些类型,为什么不能用xml类型返回
  14. 请求数据这个过程发生了什么
  15. get与post请求的区别,get与post携带数据的区别
  16. java注解
  17. kotlin扩展函数原理
  18. 算法:两个链表相加

三面:

  • main方法执行之前发生了什么
public class Main { public static void main(String[] args) { System.out.println(Main.class.getName());}
}
  • System.out.println(“a”)将字符输出到屏幕发生了什么
  • 双击QQ发生了什么
  • 浏览器输入url发生了什么
  • 根据前序遍历和中序遍历输出后序遍历
  • 如果排期只有一周的任务,但是以我的能力需要两周才能完成,这个时候你会怎么办。
  • k个一组反转链表

字节跳动旗下的抖音电商相关 Android开发工程师

一面:

  1. 实习学到的架构
  2. MVVM
  3. Dagger原理
  4. livedata原理
  5. 进程和线程
  6. 操作系统IO模型
  7. 进程通信方式
  8. 管道通信原理
  9. TCP协议如何实现可靠传输
  10. UDP如何实现可靠传输
  11. java创建线程
  12. 线程池原理
  13. 线程池拒绝策略
  14. synchronized与reentrantlock实现方式的区别
  15. AQS原理
  16. handler原理
  17. Retrofit原理

算法:

  1. 二叉树右视图 — 非递归实现

二面:

  1. Navigation的优缺点
  2. 如何实现的自定义navigate方法切换fragment,如何让被覆盖的fragment感知到生命周期
  3. gc如何判断垃圾对象
  4. 成员变量与局部变量的区别,局部变量的值一定是存放在堆中吗()
  5. jvm类加载的时机
  6. jvm类加载过程
  7. 双亲委托机制是什么
  8. 双亲委托机制什么时候会被破坏
  9. 内存泄漏是什么
  10. volatile的作用
  11. 写一个死锁
  12. 算法:判断A是否是B的子树

三面:

  1. 自己是如何学习Android的
  2. 实习过程中做的需求说一下
  3. 实习过程中的难点说一个
  4. 实习过程中和哪些人接触的比较多
  5. 如何和别人沟通的
  6. 实习的收获
  7. 挑一个项目说一下
  8. 里氏替换原则
  9. http状态码
  10. http多路复用
  11. 数据库
  12. 拿了哪些offer
  13. 算法 汉字表示的数字转成阿拉伯表示。

最后

我一直觉得技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。其实我觉得技术面试是一个 让我们认识自己 的一个过程,让我们知道现在招聘这个岗位的要求差距和我们差多少。

更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 去发现对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有问题了,要去试图了解他的工作内容、了解这个团队的工作氛围。

找工作无非就是看这三点:做什么事,和什么人,给多少钱,要给这三者在自己的心里有那么一个划分。

谢谢各位看官老爷的观看,虽然我只是把题目提供给大家了,但是大家理解一下小吴题目实在太多了(ps:其实是我偷偷在玩游戏没有搞完,然后看到现在是三月了,很多企业都开始大规模的招聘了),各位看官老爷下次更新我一定后答案也反正里面,小吴在这里希望各位看官老爷通过我分享的题目顺利的拿到自己心爱的offer。点点赞和关注,给小吴加油咯。(ps:这可是熬夜写出来的呀,各位各位看官老爷动一动小手!)

已经成功拿到了几个offer的我来告诉你,Android面试官问的一些问题,看完这一篇就没有拿不到的offer相关推荐

  1. 面试官问我有没有男朋友!该不会是看上我了吧?offer是不是就妥了?

    背景 有个姑娘说最近面试被问到一个特别奇葩的问题.面试官现场问她,有没有男朋友? 面试结束后,她就和小伙伴们分享当时的心理活动: 是不是面试官看上她了?offer是不是就妥了? 虽说是个玩笑话,但是在 ...

  2. 月薪20k+的Android面试都问些什么?终获offer

    开头 这里是一些个人开发者接私活和自己做软件加广告的一些科普知识.可是做软件,需要服务器,需要后台,对于一些小的开发者,想赚点广告费而又不想做后台使用服务器的人来说,网上提供了一些免费的接口,可以供我 ...

  3. Android面试:整理了Android面试官最常问的174道面试题,让你秒变offer收割机

    本文是专为 Android 开发工程师准备的高薪面试真题汇总题库,涵盖历年大厂高频面试题总结+核心考点深度解析,可以帮助大家全面梳理知识点,并针对面试中可能遇到的问题进行深入分析,在众多面试者中脱颖而 ...

  4. 被面试官问的Android问题难倒了,成功入职字节跳动

    感悟 这个世界有一个"二八原则"在好多地方都发挥着作用,在Android开发上我认为也一样有用.做一个Android开发,你也许只会用到Android开发知识中的20%,有80%其 ...

  5. 两个月,看完这套资料他终于如愿拿到阿里 Offer 了!

    最近很多程序员朋友反映工作了好几年,眼看自己身边的伙伴都拿到了35K+的薪水,自己的薪水却迟迟没有动静. 猎聘大数据表明,无论企业还是个人,都采取积极的行动应对,寻找人才,寻找路径,寻找新的可能和机遇 ...

  6. 小白看完都会了!怒斩获了30家互联网公司offer,面试总结

    前言 移动研发火热不停,越来越多人开始学习 android 开发.但很多人感觉入门容易成长很难,对未来比较迷茫,不知道自己技能该怎么提升,到达下一阶段需要补充哪些内容.市面上也多是谈论知识图谱,缺少体 ...

  7. 阿里面试官太暖了!3技术面+2交叉面+1代码面+1HR面,offer已拿

    背景介绍:项目是管理系统,本科211(非科班),硕士985(非科班). 我面试的岗位:java工程师 部门:新零售事业群-业务平台事业部-交易流程组 非常感谢阿里给的机会,感谢遇到的每一位面试官,面试 ...

  8. 成功入职字节跳动的小姐姐告诉你,Android面试吃透这一篇就没有拿不到的offer!

    文章目录 写在前面 来,发车了! 1. 战略定位:Android面试都会问些什么? 2. 运筹帷幄:我需要形成什么样的知识体系? 3. 披襟斩将:我需要掌握多少知识? 4. 锦上添花:面试过程中适用的 ...

  9. 32岁坚持裸辞背负房贷1w4,被阿里面试官狂虐,沉淀3个月拿到腾讯offer年薪40w+!

    我的情况 是的,我工作五年了,在互联网某血汗厂. 上周和组长提了裸辞,组长拉着我聊了两个小时,希望我还是考虑考虑,建议我不要裸辞,多想想工作的意义之类的.现在的情况就是,那次谈话之后的一周,组长没给我 ...

最新文章

  1. oracle 11g安装桌面,Lubuntu 12.10 桌面版安装Oracle 11g
  2. ubuntu 下使用KVM安装redhat/winxp
  3. oracle 表分析 影响,oracle 表分析
  4. Nginx的rewrite之return指令
  5. 谈通过测试与失败测试
  6. C语言中的“悬空指针”和“野指针”是什么意思?
  7. vm虚拟机安装包_一次Miniconda虚拟机安装的神奇踩坑记录
  8. oracle10g数据库复制,oracle -10g 中Duplicate 复制数据库
  9. python编程代码执行漏洞_代码执行漏洞 - 安全先师的个人空间 - OSCHINA - 中文开源技术交流社区...
  10. perl -p -i -e s/aaaaa/bbbbb/g ./*.sql
  11. Windows Server 部署WEB API时内部错误
  12. Linux 下删除大量文件
  13. (day06 dfs+剪枝)剑指 Offer 12. 矩阵中的路径
  14. 关于boostrap的modal隐藏问题(前端框架)
  15. Linux常用命令系统相关
  16. 【Web:Bootstrap框架】简单实现理解
  17. ios键盘done中文_IOS_总结IOS中隐藏软键盘的三种方式,一、使用软键盘的 Done 键隐藏 - phpStudy...
  18. codeup刷题2.5小节 C/C++快速入门->数组——《算法笔记》(胡凡)
  19. nikebot nike机器人 如何做一个nikebot nike监控怎么能不延迟 nike如何过盾 bot 机器人 snkrs
  20. 控制用计算机论文,计算机在自动控制技术实践中的应用分析

热门文章

  1. android 收音机调频,FM手机调频收音机
  2. Deflate数据格式分析(RFC-1951)
  3. 魔鬼交易员害了法兴银行却救了全球经济?
  4. dhu 6 获取AOE网的关键路径
  5. 简单的JS实现口风琴设计
  6. Tmall_Fore_home
  7. 总结整理时下流行的浏览器User-Agent大全
  8. Vue 组件中的data为什么是一个函数?
  9. 应对考试的计算程序复杂度。。。欸
  10. 红叶倾城一键网页游戏服务端+客户端(无须安装Java)源码