android 面试相关基础问题

一:题目

1:java核心思想

2:java高级知识,注解,反射,泛型的理解与作用

3:framework有那方面什么理解

4:Activity的生命周期与启动模式

5:性能优化

6:内存优化

7:数据结构(这方面是我的弱项,于是给我一个场景让我如何去选择,为什么)

8:Bitmap如果优化,他的三级缓存的大致思想与逻辑

9:给我说一个你项目中你用到的自定义View的实现,不用细节到代码,主要的思想与核心方法输出即可。

10:ListView如何优化,复用的原理,为什么会图片错位,如何解决,分页的思想是什么。

11:会根据你所写的技能特长找出3-4个点来问一问。由浅入深。从使用到场景到优化再到源码等等。(所以前面说了,不要随便写精通,除非你真的"精通")。

12:你在公司中用的什么代码管理,如何解决git冲突。你在工作中你的职责和主要内容等工作相关的问题

1:手写三种单例模式,冒泡排序

2:线程种类

3:java线程,场景实现,多个线程如何同时请求,返回的结果如何等待所有线程数据完成后合成一个数据

4:Android子线程与主线程交互方式,原理以及各自的优缺点。

5:有哪几种创建线程的方式,优缺点。

6:项目介绍,开源框架的认识如何封装,项目中的难点

7:Activity的生命周期,热修复的实现原理与区别(因为我简历里写了)。

8:在实际开发中的内存泄漏产生原因,如何查看,和你所知道的内存泄漏检测工具

9:项目介绍,项目提问,结果那些第三方,用工具解决问题,如何科学上网,会浏览那些网站,了解Android等技术途径等。

1:handle的使用与原理

2:线程切换与线程池的种类与作用,什么情况下使用多线程,有什么好处

3:Manifest.xml的里有什么和作用

4:什么是多进程,进程和线程的区别,如何给四大组件指定多进程。

5:多进程之间的通信的方式,如何使用AIDL。他的使用场景是什么。

6:View的加载流程

7:如何实现一个自定义View

8:如何选择第三方,从那些方面考虑

9:内存优化

10:bitmap的三级缓存思想与如何优化bitmap

11:注解的作用与原理

12:设计一个音乐播放界面,你会如何实现,用到那些类,如何设计,如何定义接口,如何与后台交互,如何缓存与下载,如何优化(15分钟时间)

13:什么是hash,他的作用是什么。hashMap源码是什么,他是依据什么原理实现的。

14:手写一段代码,如何找出一段字符串中,出现最多的汉字是哪个。

1:说下你了解那些framework。

2:说说你对布局优化的理解

3:说下当前你所知道的热更新与插件化,他们的实现核心原理是什么,他的异同有什么。

4:从哪些角度可以减少APK体积的

5:对gradle命令与打包,接触过那些平台的上架

6:简单说下接入支付的流程

7:谈谈你对自定义View的理解,如果有一个需求你会如何实现一个自定义View

8:说下LinkedList与ArrayList,HashTable与HashMap的区别与存储过程与遍历方式。

9:说下四大组件的启动过程(从Framework层去说,不必说出每个方法的名字,大致流程即可)。四大组件的启动与销毁的方式。

10:Android的数据存储方式有哪些,是否SQLite中要继承那个类来创建与更新数据库。SQL语句掌握怎么样。如何得到操作数据库的类等。

11:说下你对多进程的理解,什么情况下要使用多进程,为什么要使用多进程,在多进程的情况下为什么要使用进程通讯。

1:说下你所知道的设计模式与使用场景

2:java语言的特点与是OOP思想

3:说下java中的线程创建方式,线程池的工作原理。

4:说下handler原理,为什么会出现内存泄漏,为什么继承Handle就不会出现能存泄漏

5:说下Activity的横竖屏的切换的生命周期,用那个方法来保存数据,两者的区别。触发在什么时候在那个方法里可以获取数据等

6:是否了SurfaceView,它是什么?他的继承方式是什么?他与View的区别(从源码角度,如加载,绘制等)。

7:如何实现进程保活

8:说下冷启动与热启动是什么,区别,如何优化,使用场景等。

9: 给定命题,一串字符串中有通配符与占位符,如何化简优化(

10:说下产生OOM,ANR的原因,三级缓存原理,如何优化ListView。

11:说下你对Collection这个类的理解。

1:说下AIDL的使用与原理

2:说下你对广播的理解

3:说下你对服务的理解,如何杀死一个服务。服务的生命周期(start与bind)。

4:是否接触过蓝牙等开发

5:设计一个ListView左右分页排版的功能自定义View,说出主要的方法

6:说下binder序列化与反序列化的过程,与使用过程

7:是否接触过JNI/NDK,java如何调用C语言的方法

8:如何查看模拟器中的SP与SQList文件。如何可视化查看布局嵌套层数与加载时间。

9:说下你对后台的编程有那些认识,聊些前端那些方面的知识。

10:说下你对线程池的理解,如何创建一个线程池与使用。

11:说下你用过那些注解框架,他们的原理是什么。自己实现过,或是理解他的工作过程吗?

12:说下java虚拟机的理解,回收机制,JVM是如何回收对象的,有哪些方法等

13:一些java与Android源码相关知识等

1:实际开发中的内存优化,APK体积优化,代码优化,资源优化,缓存,数据库等

2:支付宝与微信的支付功能接入,常见问题

3:如何和后台交互,post请求的数据格式定义在那里定义,手写出来。

4:http与https的理解与4层都是哪4层,在一个请求过程中都是什么时候走这些流程与各自的作用

5:http的结构有那些(请求头,请求行之类的)

6:session与cookie的区别

7:如何在后台没有给接口的情况下如何开发应用

8:你是如何封装网络请求,数据缓存,优化,文件下载,线程池,OKHttp3源码的理解,如何提交post请求,如何处理返回数据,异常处理,实体定义等实际开发中与后台协作相关知识。

9:说下Android中特有的数据结构与常见的java数据结构(熟悉那个说那个),存储过程,源码与底层实现。

自我提升

1:博客会写主要关于自我学习的总结

2:写一些关于工作技术的总结

3:多写一些实用性强的自定义View分析

4:一些功能的分享

5:延长更新时间,因为写一篇文章要好几天往往需要8.9个小时不停的写才能写出一篇,有些浪费自己的时间

6:会写数据结构与算法系列文章

7:会写关于java高级知识的系列文章

8:多更新一些框架或是功能的使用教程

9:写一个用来对工作知识与使用练习的项目,加强对工作业务的熟练

10:选一个已做项目发布上线维护

你可能感兴趣的:(android 面试相关基础问题)