最近有好多大学生和我来说想入门Android,所以写下这篇文章来给大家一个意见。
既然大家已决定学Android,相信你对Android已有些了解,知道应该学习什么语言,这里我就不细说了,Android首先要学的是Java se,也就是JAVA基础。下面总结面四点,来给大家分析一下。
-
ActivityA启动ActivityB,两者的生命周期分别是怎样的,是顺序执行的吗?
-
用过哪些框架,答曰RxJava,Retrofit,Realm,问哪一个熟悉一点?都不太熟……就随便挑了一个OKHttp来问:http请求中keep-alive保存长连接的实现原理是怎样的?
-
LRUCache原理,如何实现?
-
手撕代码,股票买入买进最佳时机,LeetCode上原题(有6道变形)
-
二分查找,写的递归,要求转成循环方式
二面:
-
内部类和外部类有什么区别?
-
静态内部类和非静态的有什么区别?
-
内部类为什么可以访问外部类的变量?
-
垃圾回收:如果两个变量互相引用是否还会回收它们?为什么?
-
标记整理算法是怎样的?为什么要前挪整理?
-
HashMap不是线程安全的,那么用什么替代?(本来是知道的,结果我多问了一句傻话面试官就跳过这个问题了……
-
(因为项目Realm版本管理?更新表?
-
CoordinatorLayout与通常的FrameLayout和RelativeLayout相比有什么特点
-
View的绘制过程
-
(这次面试电脑麦克风出了问题 在手机面的)草草问了一下跳台阶问题
三面:
-
(因为项目提到)SurfaceView的特点?了解相关的TextureView吗?
-
HashMap的结构是怎样的,怎么存value,遇到相同的hash值的key,其value又怎么存。
-
手撕代码,想第二种解法,想第三种解法;
-
用快排来解决这个问题,优化,再优化。
-
有什么想问的?问建议学习路线,面试官建议就死磕官方源码就好,开源库的源码也多看。看不懂看别人解析也可以。
阿里面试
一面(3-5,一个半小时):
-
介绍一下项目
-
项目中怎么优化网络传输
-
讲一下rxjava实现
-
讲一下app的启动源码
-
服务的两种启动方式
-
讲一下广播
-
广播之间能传送对象吗?
-
讲一下app之间有几种交互方式
二面,(3-7,半个小时):
-
介绍一下自己
-
介绍一下最近的一个项目
-
讲一下内存泄漏怎么优化的
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》开源
Android优秀开源项目:
- ali1024.coding.net/public/P7/Android/git
最后,面试前该准备哪些资源复习?
其实客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
这里再分享一下我面试期间的复习路线:(以下体系的复习资料是我从各路大佬收集整理好的)
《Android开发七大模块核心知识笔记》
《960全网最全Android开发笔记》
《379页Android开发面试宝典》
历时半年,我们整理了这份市面上最全面的安卓面试题解析大全
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。
《507页Android开发相关源码解析》
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
va还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。