扇贝一面----Android面经

Posted William_Tao(攻城狮)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了扇贝一面----Android面经相关的知识,希望对你有一定的参考价值。

扇贝一面----android面经

人生第一次面试值得怀念

问题

1.简单自我介绍
2.说一说你提到的湖南省程序设计竞赛期间,怎么组织的项目?
3.说一下你的老友App中间遇到的最大问题。(我当时没好好准备,回答的有点冗余)
4.说一下两个不同应用程序是如何通讯的?(我当时答了个–两个activitiy之间的跳转–其实是Content Provider----------还需要加强了解)
5.序列化和反序列化指的是什么?
6.parcelable和serializable的区别和联系?(没答全)
7.手机的横屏和竖屏切换,切换过程中发上了什么样子的周期和事件?(这个知识点没太看)
8.说一说App的生命周期(onpause,onresume这两个没解释清楚)
9.横屏如果开启了自动旋转屏幕,如何做设置保存横屏之前的数据。
10.SharedPreferences保存轻量数据,保存的数据是在哪里的(具体文件夹名字忘记了)
11.SharedPreferences中commit和apply的区别(直接说只知道commit)
12.网络请求异步请求会在在子线程做,但是Android要求我们在主线程更新ui,用什么方法让子线程完成后通知主线程UI呢?
13.handler具体是什么,怎么用的
14.接口和抽象类的区别(当时问我抽象类的方法一定要加abstract吗,我当时是是的,其实不是 接口是是不能写实现的,但是如果想写,怎么办—面试官说了比较偏门,提到了-----Java高版本的关键字–default,让我有空可以了解一下)
15.有了解过协程吗?
16.有用过代码管理吗?可以简单讲讲怎么使用git吗?(我提到两点,一个是)
17.git中pull和fetch的区别?(我问了公司会用代码还是图形化工具–面试官回答了都会用)
18.设计模式有了解吗(我说的单例模式)—笑笑而过,面试官都笑了
19.Android中主流框架,你了解那些? -----当时提到RXJava公司用的多(还得学)
20.关于okhttp的知识—发网络请求,要打印网络日志,分析网络通与不同等等问题,我该怎么做(我直接说用log.d),比如说我app有两百个地方要发http请求。我想改200个请求。基于okhttp。(实际上是拦截器中的网络日志工具,有了解过拦截器模式吗?)
21.最近有在学习什么吗?说说心得体会或者遇到问题?
22.反问环节------1.想问贵公司Android岗位的部门有多少人?进去之后由谁负责带?
----------2.就是说后面我想要从事Android岗位,还需要从那些方面学习?因为我感觉Android的框架太多,不知道应该从哪里着手比较好?(提到要对基础知识要深【要有深度】,适当了解一些开源框架源码【要学习裁剪】)

问题整理(未整理完)

1.简单自我介绍

2.说一说你提到的湖南省程序设计竞赛期间,怎么组织的项目?

3.说一下你的老友App中间遇到的最大问题。(我当时没好好准备,回答的有点冗余)

4.说一下两个不同应用程序是如何通讯的?(我当时答了个–两个activitiy之间的跳转–其实是Content Provider----------还需要加强了解)

5.序列化和反序列化指的是什么?

6.parcelable和serializable的区别和联系?(没答全)

7.手机的横屏和竖屏切换,切换过程中发上了什么样子的周期和事件?(这个知识点没太看)

不设置 Activity 的 android:configChanges 时,切屏会重新回调各个生命周期,

切横屏时会执行一次,切竖屏时会执行两次。 设置 Activity 的

android:configChanges=”orientation”时,切屏还是会调用各个生命周期,切换

横竖屏只会执行一次 设置 Activity 的 android:configChanges=”orientation

|keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行

onConfigurationChanged 方法

8.说一说App的生命周期(onpause,onresume这两个没解释清楚)

oid onCreate(Bundle savedInstanceState) 第一次创建时调用

void onStart() 被用户可见时调用

void onRestart() 当Activity处于stop状态又被重新启动时调用

void onResume() 当获得焦点即可与用户交互时调用

void onPause() 当失去焦点时调用

void onStop() 当不可见时调用

void onDestroy() 当销毁时调用

9.横屏如果开启了自动旋转屏幕,如何做设置保存横屏之前的数据。

10.SharedPreferences保存轻量数据,保存的数据是在哪里的(具体文件夹名字忘记了)

以xml格式形式保存,并且存放在/data/data/<package name>/shared_prefs中

11.SharedPreferences中commit和apply的区别(直接说只知道commit)

1.apply没有返回值;commit返回值类型为boolean,表明修改是否提交成功

2.apply是先将修改数据提交到内存中,之后再异步提交到硬件磁盘中;

而commit是同步提交到磁盘,因此,在多个并发的提交保存数据的时候,commit会等待正在处理的commit保存到磁盘后再操作,从而降低了效率。而apply会先将数据提交到内存中,后面调用apply的函数时,会直接覆盖前面的内存数据,这样从一定程度上提高了很多效率

3.apply方法不会有任何失败的提示。

12.网络请求异步请求会在在子线程做,但是Android要求我们在主线程更新ui,用什么方法让子线程完成后通知主线程UI呢?

方法一:new Thread(new Runnable() **
@Override
public void run()
System.out.println(Thread.currentThread().getId());
runOnUiThread(new Runnable()
@Override
public void run()
//UI操作

);
).start();**

方法二:AsyncTask

方法三: handler

13.handler具体是什么,怎么用的

14.接口和抽象类的区别(当时问我抽象类的方法一定要加abstract吗,我当时是是的,其实不是 接口是是不能写实现的,但是如果想写,怎么办—面试官说了比较偏门,提到了-----Java高版本的关键字–default,让我有空可以了解一下)

接口(Interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的内容。
接口是通过Interface关键字来定义的,就像定义一个标准的类一样,但其中定义的所有方法都是空的。 接口中定义的所有方法都必须是公有的,这是接口的特性。 其他类需要通过implements去实现该类的方法

抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。 继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样

共同点 A.两者都是抽象类,都不能实例化 B.Interface实现类和abstract继承类都必须实现抽象方法 不同点
A.Interface需要实现,用implements;Abstract 需要继承,用exends
B.一个类可以实现多个Interface ;一个类只能继承一个Abstract
C.Interface强调功能的实现;Abstract强调从属关系
D.Interface的所有抽象类都只有声明没有方法体;Abstract抽象方法可以选择实现,也可以选择继续声明为抽象方法,无需实现,留给子类去实现
interface的应用场合 A. 类与类之间需要特定的接口进行协调,而不在乎其如何实现。

15.有了解过协程吗?

16.有用过代码管理吗?可以简单讲 讲怎么使用git吗?(我提到两点,一个是)

17.git中pull和fetch的区别?(我问了公司会用代码还是图形化工具–面试官回答了都会用)

答:git fetch:相当于是从远程获取最新版本到本地,不会自动merge

git pull:相当于是从远程获取最新版本并merge到本地

在实际使用中,git fetch更安全一些 因为在merge前,我们可以查看更新情况,然后再决定是否合并。

18.设计模式有了解吗(我说的单例模式)—笑笑而过,面试官都笑了

19.Android中主流框架,你了解那些? -----当时提到RXJava公司用的多(还得学)

20.关于okhttp的知识—发网络请求,要打印网络日志,分析网络通与不同等等问题,我该怎么做(我直接说用log.d),比如说我app有两百个地方要发http请求。我想改200个请求。基于okhttp。(实际上是拦截器中的网络日志工具,有了解过拦截器模式吗?)

21.最近有在学习什么吗?说说心得体会或者遇到问题?

22.反问环节------1.想问贵公司Android岗位的部门有多少人?进去之后由谁负责带?

​ ----------2.就是说后面我想要从事Android岗位,还需要从那些方面学习?因为我感觉Android的框架太多,不知道应该从哪里着手比较好?(提到要对基础知识要深【要有深度】,适当了解一些开源框架源码【要学习裁剪】)

结果

已经发出实习offfer,目前还没有决定要去实习

交流群

欢迎大家加入,一块学习呀!

QQ群:1098392728

以上是关于扇贝一面----Android面经的主要内容,如果未能解决你的问题,请参考以下文章

最真实的2021Android面经(无广告版)

阿里春招Android面经

腾讯Android面经

2021顺丰前端一面+二面+hr面 最详细面经(已拿offer)

阿里春招Android面经

豌豆荚 Android 开发岗面经