编程语言
首页 > 编程语言> > 写给1-3年安卓程序员的几点建议,内容太过真实

写给1-3年安卓程序员的几点建议,内容太过真实

作者:互联网

开头

相信大多数互联网的从业者都有着这样一个梦想:进大厂,获得丰厚的薪酬,和更优秀的人一起共事,在技术上获得更快的成长。

**然而部分人其实一直都陷入了“穷忙”的困局,觉得自己每天白天黑夜都在工作,高强度输出,但是却并没有获得机会的眷顾。**久而久之,既不知道自己忙什么,也不知道怎么能停下来。

这并不是时间的过错,而是因为把解决方式过多押注在技术上,然后继续在工作上不断循环,这样的状态让你极度缺少另一个层面的思考。

如何去打破这种僵局呢?很多人建议多读书,但是从哪种类型的书开始看又该看谁的书呢?说实话,很多技术书写到最后大同小异。但是万变不离其宗,源代码以及参考手册需要多些钻研,扎根底层是程序员应有的素养。

现在互联网讯息如此便捷,学习资料从来不缺。硬盘里都是各种学习资源,上下班坐地铁,还要刷技术视频。但是泛看不如精看、精读。

这里我总结了一些Android核心知识点,以及一些最新的大厂面试题、知识脑图和视频资料解析。

需要的**小伙伴私信【学习】**我免费分享给你,以后的路也希望我们能一起走下去。

正文如下

Activity面试题

1、Activity是什么

Activity是四大组件之一,它提供一个界面让用户点击和各种滑动操作,这就是Activity

2、Activity四种状态

3、Activity生命周期

4、进程的优先级

5、Activity任务栈

6、Activity启动模式

7、scheme跳转协议

Android中的scheme是一种页面内跳转协议,通过定义自己的scheme协议,可以跳转到app中的各个页面

Fragment面试题

1、Fragment为什么被称为第五大组件

Fragment比Activity更节省内存,其切换模式也更加舒适,使用频率不低于四大组件,且有自己的生命周期,而且必须依附于Activity

2、Activity创建Fragment的方式

3、FragmentPageAdapter和FragmentPageStateAdapter的区别

4、Fragment生命周期

5、Fragment的通信

6、Fragment的replace、add、remove方法

Service面试题

1、Service是什么

Service是四大组件之一,它可以在后台执行长时间运行操作而没有用户界面的应用组件

2、Service和Thread的区别

3、Service启动方式

4、Service生命周期

Broadcast Receiver面试题

1、Broadcast Receiver是什么

Broadcast是四大组件之一,是一种广泛运用在应用程序之间传输信息的机制,通过发送Intent来传送我们的数据

2、Broadcast Receiver的使用场景

3、Broadcast Receiver的种类

4、Broadcast Receiver的实现

5、Broadcast Receiver实现机制

6、LocalBroadcastManager特点

WebView面试题

1、WebView安全漏洞

API16之前存在远程代码执行安全漏洞,该漏洞源于程序没有正确限制使用WebView.addJavascriptInterface方法,远程攻击者可通过使用Java反射机制利用该漏洞执行任意Java对象的方法

2、WebView销毁步骤

WebView在其他容器上时(如:LinearLayout),当销毁Activity时,需要在onDestroy()中先移除容器上的WebView,然后再将WebView.destroy(),这样就不会导致内存泄漏

3、WebView的jsbridge

客户端和服务端之间可以通过Javascript来互相调用各自的方法

4、WebViewClient的onPageFinished

WebViewClient的onPageFinished在每次完成页面的时候调用,但是遇到未加载完成的页面跳转其他页面时,就会一直调用,使用WebChromeClient.onProgressChanged可以替代

5、WebView后台耗电

在WebView加载页面的时候,会自动开启线程去加载,如果不很好的关闭这些线程,就会导致电量消耗加大,可以采用暴力的方法,直接在onDestroy方法中System.exit(0)结束当前正在运行中的java虚拟机

6、WebView硬件加速

Android3.0引入硬件加速,默认会开启,WebView在硬件加速的情况下滑动更加平滑,性能更加好,但是会出现白块或者页面闪烁的副作用,建议WebView暂时关闭硬件加速

7、WebView内存泄漏

由于WebView是依附于Activity的,Activity的生命周期和WebView启动的线程的生命周期是不一致的,这会导致WebView一直持有对这个Activity的引用而无法释放,解决方案如下

Binder面试题

1、Linux内核的基本知识

2、为什么使用Binder

3、Binder通信模型

4、AIDL

Handler面试题

1、Handler是什么

Handler通过发送和处理Message和Runnable对象来关联相对应线程的MessageQueue

2、Handler使用方法

3、Handler工作原理

4、Handler引起的内存泄漏

原因:非静态内部类持有外部类的匿名引用,导致Activity无法释放

解决:

AsyncTask面试题

1、AsyncTask是什么

它本质上就是一个封装了线程池和Handler的异步框架

2、AsyncTask使用方法

三个参数

五个方法

3、AsyncTask工作原理

4、AsyncTask引起的内存泄漏

原因:非静态内部类持有外部类的匿名引用,导致Activity无法释放

解决:

5、AsyncTask生命周期

在Activity销毁之前,取消AsyncTask的运行,以此来保证程序的稳定

6、AsyncTask结果丢失

由于屏幕旋转、Activity在内存紧张时被回收等情况下,Activity会被重新创建,此时,旧的AsyncTask持有旧的Activity引用,这个时候会导致AsyncTask的onPostExecute()对UI更新无效

7、AsyncTask并行or串行

HandlerThread面试题

1、HandlerThread产生背景

当系统有多个耗时任务需要执行时,每个任务都会开启一个新线程去执行耗时任务,这样会导致系统多次创建和销毁线程,从而影响性能。为了解决这一问题,Google提供了HandlerThread,HandlerThread是在线程中创建一个Looper循环器,让Looper轮询消息队列,当有耗时任务进入队列时,则不需要开启新线程,在原有的线程中执行耗时任务即可,否则线程阻塞

2、HanlderThread的特点、

IntentService面试题

1、IntentService是什么

IntentService是继承自Service并处理异步请求的一个类,其内部采用HandlerThread和Handler实现的,在IntentService内有一个工作线程来处理耗时操作,其优先级比普通Service高。当任务完成后,IntentService会自动停止,而不需要手动调用stopSelf()。另外,可以多次启动IntentService,每个耗时操作都会以工作队列的方式在IntentService中onHandlerIntent()回调方法中执行,并且每次只会执行一个工作线程

2、IntentService使用方法

总结

找工作是个很辛苦的事情,而且一般周期都比较长,有时候既看个人技术,也看运气。第一次找工作,最后的结果虽然不尽如人意,不过收获远比offer大。接下来就是针对自己的不足,好好努力了。

最后为了节约大家的时间,我把我学习所用的资料和面试遇到的问题和答案都整理成了PDF文档,都可以分享给有需要的朋友,如有需要私信我【资料】或者**【点这里】免费领取**

《Android面试复习资料汇总》

喜欢文章的话请关注、点赞、转发 谢谢!

%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)免费领取**

《Android面试复习资料汇总》

喜欢文章的话请关注、点赞、转发 谢谢!

标签:面试题,Fragment,年安卓,写给,程序员,AsyncTask,线程,Activity,WebView
来源: https://blog.csdn.net/dajie1213/article/details/115467697