Android 面试总结【中级】

从毕业至今经历了两家公司,都是比较小的创业型公司。目前因为公司的缘故(算是倒闭吧—停业清算)不得投入到轰轰烈烈的求职大军中来。这次求职的目标是中大型公司,加之时间只有一个月不到,因此面试经历不算丰富。不过还是记录下来以供参考,顺便算是一个总结吧。

这里只对问题做一些记录,具体答案就不公布了,才疏学浅以免误导。

Java 相关

这一部分主要是一些 Java 方面的知识。面试 Android 免不了的会被问到 Java 的东西。

  • Java 三大特性
  • Java中==和equals和hashCode的区别
  • String、StringBuffer、StringBuilder区别
  • 对 String 的理解
  • 成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用
  • 泛型中 extends 和 super 的区别
  • 泛型的原理
  • 序列化的方式及区别
  • 一个 Integer 对象在内存中占多少个字节
  • Java 的异常体系
  • 多态的机制
  • 反射机制
  • 类加载过程

Android 相关

  • 四大组件
  • Activity Fragment 生命周期
  • Activity 各种切换间的生命周期调用过程
  • Activity 启动模式及应用场景
  • Activity 和 Service 之间的通讯方式
  • 跨进程通讯都有那些方式
  • 数据库,以及数据库升级
  • 自定义 View 相关的东西
  • 事件分发机制
  • Activity-Window-View三者的关系
  • IntentService 的原理
  • AsyncTask 的原理
  • Activity 的启动
  • Handler 的原理
  • Handler 使用过程中可能出现那些问题,及解决办法
  • ScrollView 的原理
  • 对Bitmap 的理解
  • RecycleView/ListView 优化
  • gradle 在打包过程中是怎么执行的
  • Library 和 主工程的 gradle 的区别

Kotlin

关于 Kotin 这个被问到的比较少,但是现在越来越多公司开始使用,所以最好还是做一定的了解。

  • 高阶函数
  • 类扩展
  • 对 Kotlin 的看法(使用心得等)

一些常用三方库、框架等

这个也是被问到的比较多的内容,一般都是问原理。

  • 开发中都用到了那些三方库
  • RxJava 的使用及原理
  • Glide 的原理
  • Retrofit 的原理

数据结构

包括一些常用集合的原理等问题,我把它们划分为数据结构相关的知识

  • HashMap 的原理(初始化、扩容、put操作等)
  • HashMap 和 HashTable 的区别,哪个是线程安全的
  • ArrayList 的原理
  • ArrayList 和 LinkedList 的区别
  • TreeMap 的了解
  • SpareArray 的原理
  • 链表(要求手写一个链表结构)
  • 平衡二叉树的了解
  • 二叉树的遍历(前序、中序、后序)

线程相关

多线程其实在面试中是被问到的比较多的,不过翻来覆去就这几个问题

  • run 和 start 的区别
  • 怎么启动多线程
  • 线程池都有哪些,以及他们的区别、原理等
  • 线程是什么时候结束的
  • 如何结束掉一个线程,如果当前线程正在被阻塞,怎么结束掉
  • Thread 和 Runnable 的区别
  • 线程同步机制
  • 锁机制

算法

算法这一块被问到的不是太多,不过最好做相应的了解并由一定的准备。

  • 排序算法有哪些
  • 冒泡排序的时间复杂度
  • 要求对一组学生成绩做排序,并写出算法的时间复杂度
  • 1, 1, 2, 3, 5, 8, 13, 21, 34, 55… 的规律,并手写算法(斐波那契数列)
  • 反转一个单链表

网络相关

网络这一块被问到的也不算太多,都是比较简单的问题。

  • Http 请求的方式都有哪些
  • GET 请求的参数有什么要注意的
  • GET 请求的参数长度限制
  • POST 请求的类型有哪些

主观问题

这里面主要是聊一些主观性的东西,不过个人认为算是比较重要的东西。

  • 如果让你封装一个图片加载库,你都会考虑哪些方面的问题
  • 如果一个页面多次进入越来越卡,你会考虑到那些方面的问题
  • 最近开发中遇到的认为比较有价值的问题
  • 你认为你做的项目中有哪些比较有代表性的技术
  • 闲暇时间都干嘛?
  • 平时有看一些技术文章、书籍么?你认为对你实际开发的帮助有哪些
  • 搞了这么久开发,你认为自己有哪些亮点

其他

  • git 的 Rebase 和 Merge 的区别

以上就是我在近一个月面试过程中遇到的问题,仅靠个人之力肯定不够全面。不过程序员崇尚开源,这里也是拿出来和大家分享。

猜你喜欢

转载自blog.csdn.net/u011494285/article/details/80795831