面试专题

Android 面试总结

2019-01-27  本文已影响83人  MS_CAOXU

最近一直在复习Android的知识,希望在寒冬中有一定的自保能力。现在只是总结了一部分,后续还会一直更新,希望我的总结能给大家带来一些帮助。总结的不对的地方希望大家指正,一起进步,让我们在寒冬中抱团取暖。
本文参考
Android 进阶之光
Android开发艺术探索
动脑学院VIP课程

JAVA 基础

Java基本数据类型

Java语言提供了8种基本数据类型。六种数字类型(四个整数型(默认是int 型),两个浮点型(默认是double 型)),一种字符类型,还有一种布尔型。

数据类型 大小位 字节数 默认值
byte(字节) 8 1 0
short(短整型) 16 2 0
int (整形) 32 4 0
long (长整形) 64 8 0
float (单精度) 32 4 0.0
double (双精度) 64 8 0.0
char (字符) 16 2 \u000
boolean (布尔) - - flase

接口的意义

抽象类的意义

抽象类往往用来表征对问题领域进行分析 设计中得出的抽象概念,是对一系列看上去不同,但本质相同的具体概念的抽象

内部类的作用

  1. 内部类可以很好的实现隐藏,一般的非内部类,是不允许有private protected权限的,但内部类可以。
  2. 内部类拥有外围类的所有元素访问权限
  3. 可以通过内部类来实现多重继承
  4. 可以避免修改接口而实现同一个类中两种同名方法的调用

父类的静态方法能否被子类重写,为什么?

父类的静态方法 不能被子类重写,重写只使用与实例方法,不能用于静态方法,对于子类和父类有相同方法名的方法 我们称之为隐藏

Java的静态方法形式上可以被重写,但是本质上并不是Java的重写。因为静态方法至于类相关,不予具体的实现相关。声名的是什么类则引用相应类的静态方法(本来静态无需声明,可以直接引用)。并且static 方法不是后期绑定的,他在编译期酒完成了绑定。换句话说。这个方法不会进行多态判断,只与声明有关

Java 集合的继承关系

HashMap原理,Hash冲突,并发集合,线程安全集合及实现原理

HashMap 和 HashTable 区别

HashCode 作用,如何重载hashCode方法

ArrayList与LinkList区别与联系

哪些情况下的对象会被垃圾回收机制处理掉

进程和线程的区别

进程是操作系统的基础,是程序在一个数据集合上运行的过程,是系统进行资源分配和调度的基本单位。进程可以被看作程序的实体,同时他也是线程的容器----进阶之光

Java 中==号和equals 的区别

Java Object类方法

GC机制

Java反射机制,Java代理模式

Java泛型

Synchronized原理

Volatile实现原理

方法锁、对象锁、类锁的意义和区别

线程同步的方法:Synchronized、lock、reentrantLock分析

Java锁的种类: 公平锁、乐观锁、互斥锁、分段锁、偏向锁、自旋锁等

ThreadLocal的原理和用法

ThreadPool的用法和示例

wait()和sleep()的区别

2 JAVA高级

Java虚拟机,Java运行,Java GC机制(可达性分析法,引用计数法)

Java对象的完整生命周期

JVM内存模型

进程间通信,线程间通信

JVM类加载机制

Java引用类型

设计模式:除常用设计模式之外,特别的,反射机制,代理模式

HTTP协议和HTTPS协议

Socket协议,Socket实现长连接

TCP和UDP协议

HTTP协议中GET和POST的具体实现

序列化和反序列化

线程池的实现原理

数据库基础知识:多表查询、索引、数据库事务

3 Android初级

Application生命周期

Android Activity生命周期

activity的生命周期有onCreate() onStart () onResume() onPuase() onStop()onDestroy() 和onRestart()方法

如果Activity采用了透明主题那么onStop方法不会调用

onStart onStop 方法和onResume onPause的区别(√)

  • onStart和onStop 是从Activity是否可见这个角度回调的
  • onResume 和onPause 是从Activity是否位于前台这个角度回调的

Activity 启动模式

activity 目前有4中启动模式 standard singleTop singleTask singleInstance

Android 进程间通信方式

Bundle、文件共享、Messnger、ContentProvider和Socket等。

Android Service、IntentService,Service和组件间通信

Activity的onNewIntent

Fragment的懒加载实现,参数传递与保存

ContentProvider实例详解

BroadcastReceiver使用总结

数据库的操作类型又哪些,如何导入外部数据库?

  1. openOrCreatrDatabase(String path)
  2. 继承SqliteOpenHelp 类对数据库及起版本进行管理(onCreate,onUpgrade)当程序调用这个类的方法getWritableDatabase()或者getReadableDatabase()的时候才会打开数据库。如果当时没有数据库文件的时候,系统就会自动生成一个数据库。

Android消息机制

Binder机制,共享内存实现原理

Android 事件分发机制

Android 多线程的实现:Thread、HandlerThread、AsyncTask、IntentService、RxJava

ActivityThread工作原理

嵌套滑动实现原理

RecyclerView与ListView(缓存原理,区别联系,优缺点)

View的绘制原理,自定义View,自定义ViewGroup

View、SurfaceView 与 TextureView

主线程Looper.loop为什么不会造成死循环

ViewPager的缓存实现

requestLayout,invalidate,postInvalidate区别与联系

AndroidP新特性

Android两种虚拟机

ADB常用命令

Asset目录与res目录的区别

Android SQLite的使用入门

4 Android 必会

四大组件

Handler 原理

View事件分发

View 绘制流程

多线程

AsyncTask

图片加载

网络请求

内存优化

1,内存泄漏其实就是内存不在GC的掌控之中了 当一个对象不需要使用了 本该被回收时 而有另一个正在使用的对象持有他的引用而导致对象不能回收,就产生了内存泄漏 如果产生了内存泄漏 会造成

5 数据结构与算法

栈和队列

数组和链表,自定义一个动态数组

Hash表,及Hash冲突的解决

二叉树

B+ B-树

基础排序算法:重点 快排、归并排序、堆排序(大根堆、小根堆)

快排的优化

二分查找与变种二分查找

哈夫曼树、红黑树

字符串操作,字符串查找,KMP算法

图的BFS、DFS、prim、Dijkstra算法(高阶技能)

经典问题:海量数据的处理 (10亿个数中找出最大的10000个数 TOP K问题)

上一篇下一篇

猜你喜欢

热点阅读