字节跳动技术总监自爆:万字 Android 技术类校招面试题汇总
1、Java se 基础
1).Java 基本数据类型与表达式,分支循环。2).String 和 StringBuffer 的使用、正则表达式。3).面向对象的抽象,封装,继承,多态,类与对象,对象初始化和回收;构造函数、this 关键字、方法和方法的参数传递过程、static 关键字、内部类。4).对象实例化过程、方法的覆盖、final 关键字、抽象类、接口、继承的优点和缺点剖析;对象的多态性:子类和父类之间的转换、抽象类和接口在多态中的应用、多态带来的好处。5).Java 异常处理,异常的机制原理。6).常用的设计模式:Singleton、Template、Strategy 模式。7).JavaAPI 介绍:种基本数据类型包装类,System 和 Runtime 类,Date 和 DateFomat 类等。8).Java 集合介绍:Collection、Set、List、ArrayList、LinkedList、Hashset、Map、HashMap、Iterator 等常用集合类 API。9).JavaI/O 输入输出流:File 和 FileRandomAccess 类,字节流 InputStream 和 OutputStream,字符流 Reader 和 Writer,以及相应实现类,IO 性能分析,字节和字符的转化流,包装流的概念,以及常用包装类,计算机编码。10).Java 高级特性:反射和泛型。11).多线程原理:如何在程序中创建多线程(Thread、Runnable),线程安全问题,线程的同步,线程之间的通讯、死锁。
2、android UI 编程
1)、Android 开发环境搭建:Android 介绍,Android 开发环境搭建,第一个 Android 应用程序,Android 应用程序目录结构。
2)、Android 初级控件的使用:
TextView 控件的使用 Button 控件的使用方法 EditText 控件的使用方法 ImageView 的使用方法 RadioButton 的使用方法 Checkbox 的使用方法 Menu 的使用方法
3)、Android 高级控件的使用:
ListView 的使用方法 GridView 的使用方法 Adapter 的使用方法 Spinner 的使用方法 Gallary 的使用方法 ScrollView 的使用方法 RecyclerView
4、对话框与菜单的使用:
Dialog 的基本概念 BlockquoteAlertDialog 的使用方法 DatePickerDialog 的使用方法 Menu 的使用方法自定义 Menu 的实现方法
5.控件的布局方法:
线性布局的使用方法相对布局的使用方法
6.多 Acitivity 管理:
AndroidManifest.xml 文件的作用 Intent 的使用方法使用 Intent 传递数据的方法启动 Activity 的方法 IntentFilter 的使用方法 Activity Group 的使用方法
7、自定义控件实现方法:
自定义 ListView 的实现方法可折叠 ListView 的使用方法自定义 Adapter 的实现方法自定义 View 的实现方法动态控件布局的上实现方法上拉刷新下拉加载更多
3、android 网络编程与数据存储
1).基于 Android 平台的 HTTP 通讯:
Http 协议回顾使用 Get 方法向服务器提交数据的方法使用 POST 方法向服务器提交数据的实现方法使用 Http 协议实现多线程下载使用 Http 协议实现断点续传
2).Android 数据存储技术:
SQLite3 数据库简介 SQL 语句回顾 SQLite3 编程接口介绍 SQLite3 事务管理 SQLite3 游标使用方法 SQLite3 性能分析访问 SDCard 的方法访问 SharedPreferences 的方法
初级工程师
技术要求:
基本知识点比如四大组件如何使用、如何创建 Service、如何进行布局、简单的自定义 View、动画等常见技术
书籍推荐《第一行代码 Android》、《疯狂 Android》
中级工程师
技术要求:
稍微深入的知识点 AIDL、Messenger、Binder、多进程、动画、滑动冲突、自定义 View、消息队列等
书籍推荐《Android 开发艺术探索》、《Android 群英传》
AIDL:熟悉 AIDL,理解其工作原理,懂 transact 和 onTransact 的区别;
Binder:从 Java 层大概理解 Binder 的工作原理,懂 Parcel 对象的使用;
多进程:熟练掌握多进程的运行机制,懂 Messenger、Socket 等;
事件分发:弹性滑动、滑动冲突等;
玩转 View:View 的绘制原理、各种自定义 View;
动画系列:熟悉 View 动画和属性动画的不同点,懂属性动画的工作原理;
懂性能优化、熟悉 mat 等工具
懂点常见的设计模式
搞懂 view 的滑动原理
搞懂如何实现弹性滑动
搞懂 view 的滑动冲突
搞懂 view 的 measure、layout 和 draw
然后再学习几个已有的自定义 view 的例子
最后就可以搞定自定义 view 了,所谓万变不离其宗
高级工程师
技术要求:
稍微深入的知识点
系统核心机制
基本知识点的细节
设计模式和架构
书籍推荐《Android 开发艺术探索》、《Android 源码设计模式解析与实战》、《Android 内核剖析》
继续加深理解”稍微深入的知识点“中所定义的内容
了解系统核心机制:
了解 SystemServer 的启动过程
了解主线程的消息循环模型
了解 AMS 和 PMS 的工作原理
能够回答问题”一个应用存在多少个 Window?“
了解四大组件的大概工作流程
…
基本知识点的细节
Activity 的启动模式以及异常情况下不同 Activity 的表现
Service 的 onBind 和 onReBind 的关联
onServiceDisconnected(ComponentName className)和 binderDied()的区别
AsyncTask 在不同版本上的表现细节
线程池的细节和参数配置
…
熟悉设计模式,有架构意识学习方法
以上就是整理分享的 Android 开发进阶的一个学习路线。
写在最后
在技术领域内,没有任何一门课程可以让你学完后一劳永逸,再好的课程也只能是“师傅领进门,修行靠个人”。“学无止境”这句话,在任何技术领域,都不只是良好的习惯,更是程序员和工程师们不被时代淘汰、获得更好机会和发展的必要前提。
如果你觉得自己学习效率低,缺乏正确的指导,可以加入资源丰富,学习氛围浓厚的技术圈一起学习交流吧!
加入我们吧!群内有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的 Android 交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。
35 岁中年危机大多是因为被短期的利益牵着走,过早压榨掉了价值,如果能一开始就树立一个正确的长远的职业规划。35 岁后的你只会比周围的人更值钱。
评论