美文网首页Android开发Android开发经验谈Android技术知识
Android基础都没学好就去面试,这不是挖坑给自己跳吗?字节跳

Android基础都没学好就去面试,这不是挖坑给自己跳吗?字节跳

作者: jett老师 | 来源:发表于2020-08-27 16:41 被阅读0次

前言

我是1月8号下午两点进行的面试,是一面。之前学校内推给了搜狐的offer,但迟迟没有消息,所以就自己用某招聘软件投简历广撒网。其实一开始我并没有投字节跳动,可能是最近他们太缺人了吧,就给我发了消息让我把简历投过去,之后就安排我面试了。之后第二天上午通知我一面过了,让我准备二面。一面过程感觉很糟糕,很多基础问题都没答上来,因为觉得可能是大公司,不会在意太多的基础,结果被虐了。但是还是过了,目前搜集了很多面经,总结了一些常见问题,希望下一次面试表现会好一点。

面试官的问题

1. 请描述一下Activity 生命周期。

答: 共有七个周期函数,按顺序分别是: onCreate(), onStart(), onRestart(), onResume(), onPause(),onStop(), onDestroy()。

onCreate(): 创建Activity时调用,设置在该方法中,还以Bundle的形式提供对以前存储的任何状态的访问。onStart(): Activity变为在屏幕上对用户可见时调用
onResume(): Activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用。
onPause(): Activity被暂停或收回cpu和其他资源时调用,该方法用户保护活动状态的,也是保护现场。
onStop(): Activity被停止并转为不可见阶段及后续的生命周期事件时调用。
onRestart(): Activity被重新启动时调用。该活动仍然在栈中,而不是启动新的Activity。

1、完整生命周期: 即从一个Activity从出现到消失,对应的周期方法是从onCreate()到onDestroy()。

2、可见生命周期: 当Activity处于可以用户看见的状态,但不一定能与用户交互时,将多次执行从onStart()到onStop()。

3、前景生命周期: 当Activity处于Activity栈最顶端,能够与其他用户进行交互时,将多次执行从onResume()到onPause()。

2. 两个Activity之间跳转时必然会执行的是哪几个方法。

答: 两个Activity之间跳转必然会执行的是下面几个方法。

onCreate()//在Activity生命周期开始时调用。
onRestoreInstanceState()//用来恢复UI状态。
onRestart()//当Activity重新启动时调用。
onStart()//当Activity对用户即将可见时调用。
onResume()//当Activity与用户交互时,绘制界面。
onSaveInstanceState()//即将移出栈顶保留UI状态时调用。
onPause()//暂停当前活动Activity,提交持久数据的改变,停止动画或其他占用GPU资源的东西,由于下一个Activity在这个方法返回之前不会resume,所以这个方法的代码执行要快。
onStop()//Activity不再可见时调用。
onDestroy()//Activity销毁栈时被调用的最后一个方法。

3. 横竖屏切换时候Activity的生命周期。

答:1、不设置Activity的android: configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次。
2、设置Activity的android: configChanges=“orientation”时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次。
3、设置Activity的android: configChanges=“orientation|keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行onConfiguration方法

4. 如何将一个Activity设置成窗口的样式。

答:第一种方法,在styles.xml文件中,可以新建如下的类似Dialog的style。
<style name=“Theme.FloatActivity” parent=“android:style/Theme.Dialog”> </style>。
第二种方法,在AndroidManifest.xml中在需要显示为窗口的Activity中添加如下属性: android: theme=“@style/Theme.FloatActivity”即可。也可以直接添加对应需要展示为Dialog style的Activity的android: theme属性为android: theme=“@ android: style/Theme.Dialog”。

5. 两个Activity之间怎么传递数据?

答: 可以在Intent对象中利用Extra来传递存储数据。
在Intent的对象请求中,使用putExtra(“键值对的名字”,”键值对的值”);在另外一个Activity中将Intent中的请求数据取出来:
Intent intent = getIntent();
String value = intent.getStringExtra(“testIntent”);

6. 怎么让在启动一个Activity是就启动一个service?

答: 首先定义好一个service,然后在Activity的onCreate里面进行连接并bindservice或者直接startService。

7. Activity怎么和service绑定,怎么在activity中启动自己对应的service?

答:①activity能进行绑定得益于Serviece的接口。为了支持Service的绑定,实现onBind方法。
②Service和Activity的连接可以用ServiceConnection来实现。需要实现一个新的ServiceConnection,重现onServiceConnected和OnServiceDisconnected方法,一旦连接建立,就能得到Service实例的引用。
③执行绑定,调用bindService方法,传入一个选择了要绑定的Service的Intent(显示或隐式)和一个你实现了的ServiceConnection的实例

8.什么是Service以及描述下它的生命周期。Service有哪些启动方法,有什么区别,怎样停用Service?

答: Android Service是运行在后台的代码,不能与用户交互,可以运行在自己的进程,也可以运行在其他应用程序进程的上下文里。需要通过某一个Activity或者Context对象来调用。Service有两个启动方法,分别是Context.startService()和Context.bindService()。如果在Service执行耗时的操作需要启动一个新线程来执行。

Android Service只继承了onCreate(), onStart(),onDestroy()三个方法,当我们第一次启动Service时,先后调用onCreate(), onStart()这两个方法,当停止Service时,则执行onDestroy()方法时。如果Service已经启动了,当我们再次启动Service时,不会再执行onCreate()方法,而是直接执行onStart()方法。

9. 什么时候使用Service?

答: 比如播放多媒体的时候,用户启动了其他Activity,这个时候程序要在后台继续播放,比如检测SD卡上文件的变化,再或者在后台记录你的地理信息位置的改变等等。

10. 请描述一下Intent 和 Intent Filter。

答: Intent在Android中被翻译为”意图”,他是三种应用程序基本组件-Activity,Service和broadcast receiver之间相互激活的手段。在调用Intent名称时使用ComponentName也就是类的全名时为显示调用。这种方式一般用于应用程序的内部调用,因为你不一定会知道别人写的类的全名。而Intent Filter是指意图过滤,不出现在代码中,而是出现在android Manifest文件中,以的形式。(有一个例外是broadcast receiver的intent

filter是使用Context.registerReceiver()来动态设定的,其中intent filter也是在代码中创建的)

一个intent有action,data,category等字段。一个隐式intent为了能够被某个intent filter接收,必须通过3个测试,一个intent为了被某个组件接收,则必须通过它所有的intent filter中的一个。

其他基础面试题,可以查看我的【GitHub】都是近年大厂面试真题!

如何打好基础

Android的入门还是很容易的,但是后续的难度会比前期难很多,所以前期学习过程中一定要打牢基础。

以下是学习路线:

1、Java基础

虽然现阶段Google已经将Kotlin定为官方推荐语言,但是大多数国内项目都是用Java开发。即使以后的大趋势是向Kotlin转换,也需要一些时间,所以完全不用担心Java会过时,你可以在Android学的差不多的时候再去学Kotlin,学习成本也会很低。

  1. 如果非科班出身建议看视频或者找人指导学习,科班出身可以直接看Java相关书籍,基础好的可以一边了解Android一边学习Java。

  2. 对于Java需要掌握到什么程度:- Java基本数据类型、基本语法、关键字、表达式和分支循环- 面向对象,封装、多态和继承- 接口的使用方法和场景- Java常用的各类型集合的优缺点及使用场景- JavaI/O- Java的多线程- Java的反射机制和泛型- 一些常用的设计模式(如:单例、工厂等)

掌握了以上Java知识基本可以应对很多开发场景。

2、Android(软硬件部分)

  1. 开发平台:电脑用Windows的或者Mac都可以,处理器最好i5及以上,8G内存及以上,配上固态硬盘。(推荐Mac)

  2. 开发工具:Eclipse已经很少见到,大多数开发人员都选择AndroidStudio(IntelliJ IDEA也可以,跟AS类似),调试可以用AS自带的模拟器或者第三方模拟器,有条件的请用真机。

  3. 开发环境:配好Java环境,正常安装AndroidStudio即可。

3、Android(基础编程部分)

  1. 了解项目工程各个目录的作用

  2. 学习各类基本布局的使用方法

  3. 了解基本控件的使用(如:TextView、ImageView等)

  4. Activity和Fragment的生命周期,数据交互方法

  5. 列表类控件(如:RecylerView、ListView等)和Adapter的使用方法

  6. Activity的启动模式,四大基本组件的作用及使用场景

4、Android(进阶编程部分)

  1. 数据库的简单存储(增删改查)

  2. Android自带的SharePreferences存储

  3. 文件存储的方法

  4. Android的消息机制和异步任务

  5. 三种动画的使用

  6. 了解Http协议相关的知识

  7. 触摸事件的分发机制

  8. 自定义View

掌握以上的知识基本可以算是入门了,能自己写一写简单的东西,但是想要直接做项目还有一定的距离。

总结

所以基础是根本!但是想要拿高薪实现技术提升薪水得到质的飞跃。最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以这里分享一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。(以下是一小部分,获取更多其他精讲进阶架构视频资料可以点击点击链接加入【Android高级架构师交流
①Android开发核心知识点笔记

②对标“阿里 P7” 40W+年薪企业资深架构师成长学习路线图

③面试精品集锦汇总

④全套体系化高级架构视频

Android精讲视频领取学习后更加是如虎添翼!进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水,赶快领取吧!

【Android进阶学习视频】、【全套Android面试秘籍】点击领取:评论回复【666】即可获取!

相关文章

  • Android基础都没学好就去面试,这不是挖坑给自己跳吗?字节跳

    前言 我是1月8号下午两点进行的面试,是一面。之前学校内推给了搜狐的offer,但迟迟没有消息,所以就自己用某招聘...

  • 自己挖坑儿给自己跳

    我平时和二姐住在一起,疫情期间上下班搭附近同事的车上下班。 一次,我和二姐约在地铁站见面,同事把我送到目的地。在车...

  • 自己挖坑自己跳

    【斯7:9】 伺候王的一个太监名叫哈波拿,说,哈曼为那救王有功的末底改做了五丈高的木架,现今立在哈曼家里。王说,...

  • 自己挖坑自己跳

    最近又给自己挖了一个坑,那就是减肥!因为践行群的一个战友分享了自己一年时间减肥了40斤,直接从180斤减肥到了14...

  • 这个坑你被套路过几回?

    最近公司发生了很多不可思议的事! 先是教学老师挖坑给市场的跳, 再是教学部老师互相挖坑; 又是老板挖坑给员工跳(这...

  • 挖坑跳

    自己挖的坑要自己跳,耍赖可不行。我今天把学生们折磨的够惨,可是我同样陪你们一起受折磨。学生们很认真,佳作频出。 画...

  • 找死的小人,自己挖坑往里跳?

    小人找死,就是找死,自己挖坑往里跳,自己挖坑往里跳也就算了,被你这个小人搅出事来了,还又害怕了,怕什么?敢做就敢当...

  • 你不要自己挖坑自己跳

    在上一篇文章写完之后,哦,那篇猫尾巴一样的小短文,根本不能称之为文章,充其量只能算作小短文。每当写一篇什么出来,自...

  • 字节跳动面经分享,从JVM到线程池,这100道面试题你未必掌握了

    字节跳动前段时间听很多朋友分享了他们最近糟糕却又对职业生涯很有帮助的的面试经历,在这里分享给大家,咱来讲讲:字节跳...

  • 欢乐挖坑,使劲跳!

    仅仅看了几页课本,哈欠打了十几个,眼皮开始耷拉,如果现在有个枕头,我能马上睡过去,睡眠质量最好的时候,一是在课堂上...

网友评论

    本文标题:Android基础都没学好就去面试,这不是挖坑给自己跳吗?字节跳

    本文链接:https://www.haomeiwen.com/subject/ogwcsktx.html