android面试(android基础面试题及答案)

大家好,本篇文章为大家解答以上问题,相信很多人对android面试都不是特别的了解,因此呢,今天就来为大家分享下关于android面试以及android基础面试题及答案的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本

大家好,本篇文章为大家解答以上问题,相信很多人对android面试都不是特别的了解,因此呢,今天就来为大家分享下关于android面试以及android基础面试题及答案的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

本文目录一览

  • 1、android工程师面试一般会问哪些问题_android高级工程师面试题
  • 2、大厂Android开发高频面试问题:说说你对Zygote的理解

android工程师面试一般会问哪些问题_android高级工程师面试题

1.Android经验

如果不是校招,Android经验是必须的,我比较喜欢问一些基础概念与技术原理,比如Activity、View、Window的理解,各LaunchMode的使用场景,View的绘制流程,Touch事件机制,Android动画的原理,Handler,Looper的理解,Android跨进程通讯的方式,Binder的理解,AndroidMashup设计的理解等等。

2.Java水平

基本上就是EffectiveJava那本书里提到的东西,如果你背完那本书里的问题,并且对答如流,没问题,就要你这样的。其实也会考察关于final用法,反射原理,注解原理,java编译过程,GC等一些常见问题。

3.IT基础知识

其实就是计算机科班学生学校里学到的一些东西,在校招时这块是重点,社招会放宽,但一些基本的常识是要有的,比如不少人都不知道http的getpost有啥区别,https的那个s是什么意思,讲不清进程与线程的概念,不知道二分算法是个啥东西。这些简单问题的筛选,可以过滤一些所谓野路子的程序员,是不是科班出身不重要,搞这行就得对一些基本常识有概念,不然以后怎么愉快的交流呢?

4.代码质量的认识

我们需要的是一个对代码味道有感觉的人,关于这点,看下《CleanCode》就够了,面试中这点其实不好考察,可以让他聊一聊对代码质量的认识,虽然不能排除对方夸夸其谈,至少想法不多,只能提到命名风格这一点的人是不符合要求的,也可以在写Code的环节中观察。

5.技术视野

比如对Android开发新技术的了解与学习,对其它流行技术领域的了解,这其实与我刚才提到的技术广度的考察有关,就我面试过程中,发现很多非互联网行业的从业人员,因为公司各种操蛋规定与公司技术氛围的原因,技术视野相当狭窄。

我个人对这点深有体会,2011年我还在传统行业从事软件研发,当时的公司因为担心技术信息泄露,不让上网,相当封闭,我个人虽然自认为已在那个行业内做到业内专家的级别,但总感觉哪里不对,有一天我很兴奋的打算跟身边同事聊一聊Android的时候,发现他们居然都不知Android为何物?2011年啊同志们,当时的震惊无法言表,深切感觉到需要作出改变了,毅然放弃多年行业积累,转战移动互联网,直到现在。时至今日,多年前的小伙伴也有很多混出了名党,开始走向人生巅峰,我也从来没有后悔当初做出的选择。

6.技术想象力

一个优秀的技术人,如果知识的深度与广度足够,知识已成体系,那么他对于一些从未接触过的领域,也是可以做出足够合理的想象与判断,面试过程中如果问到一些领域候选人没有涉猎,这时候一般不用过多纠缠,但如果你想借这个问题考察下他的技术想象力,可以深入下去,比如问他:“你觉得这个东西应该是什么原理呢?”,“这个酷炫的控件,如果要你来做,你会怎么实现?”。在这方面表现出色的同学无疑是有深厚基础与足够广度的人。

大厂Android开发高频面试问题:说说你对Zygote的理解

Zygote可以说是Android开发面试很高频的一道问题, 但总有小伙伴在回答这道问题总不能让面试满意, 在这你就要搞清楚面试问你对Zygote的理解时,他最想听到的和其实想问的应该是哪些? 下面我们通过以下几点来剖析这道问题!

Zygote的作用分为两点:

关于这个问题答出了这两点那就是OK了。可能大部分小伙伴可能能答出第二点,第一点就不是很清楚。SystemServer也是Zygote启动的,因为SystemServer需要用到Zygote准备好的系统资源包括:

直接从Zygote继承过来就不需要重新加载过来,那么对性能将会有很大的提升。

在说Zygote启动流程之前, 先明确一个概念:启动三段式, 这个可以理解为Android中进程启动的常用套路, 分为三步骤:

这里要了解LOOP循环是什么,其实LOOP作用是不停地 接受消息 , 处理消息 ,消息的来源可以是 Soket 、 MessageQueue 、 Binder 驱动发过来的消息,但无论消息从哪里来,它整个流程都是去接受消息,处理消息。这个启动三段式,它不光是Zygote进程是这样的,只要是有独立进程的,比如说系统服务进程,自己的应用进程都是如此。

Zygote进程的启动取决于init进程,init进程是它是linux启动之后用户空间的第一个进程,下面看一下 启动流程 :

3.启动配置文件中定义的系统服务,其中Zygote服务就是定义在配置中的

4.同时启动的服务除了Zygote之外还有一些别的系统服务也是会启动的,比如说ServiceManager进程,它是通过fork+execve系统调用启动的

在init.rc 文件中会import /init.${ro.zygote}.rc,init.zygoteXX,XX指的是32或者64,对我们没差我们直接看init.zygote32.rc即可。配置文件比较长,这里做了截取保留了Zygot相关的部分。

说完了启动配置呢,这里来聊一下启动进程, 启动进程有两种方式:

第一种:fork+handle

第二种:fork+execve

两者看起来差不多,首先首先都会调用fork函数创建子进程,这个函数比较奇特会返回两次,子进程返回一次,父进程返回一次。 区别在于:

主要分为两部分Native层处理和Java层处理,Zygote进程启动之后,它执行了execve系统调用,它执行的是用C++写的二进制的可执行程序里的main函数作为入口,然后在Java层运行!

先来看一下Native层的处理流程

在app_main.cpp文件,AndroidRuntime.cpp文件。我们可以找到几个主要函数名

根据上述代码,你会发现在我们的应用里直接就可以 JNI 调用了,并不需要创建虚拟机。因为应用进程是Zygote进程孵化出来的,继承了父进程的拥有虚拟机,只需要重置数据即可。

接着看一下Java层的处理,具体可参考ZygoteInit文件的main方法

1.预加载资源,比如常用类库、主题资源及一些共享库等

2.启动SystemServer进程

3.进入Socket 的Loop循环 会看到的ZygoteServer.runSelectLoop(…)调用

Zygote启动流程中需要主要以下2点问题

最后

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 449@qq.com 举报,一经查实,本站将立刻删除。本文链接:https://www.hnhgjc.com/n/533586.html

(0)
jindon的头像jindon
上一篇 2023-07-22
下一篇 2023-07-22

相关推荐

  • win11安全模式怎么进(win11开机强制进入安全模式重置)

    大家好,本篇文章为大家解答以上问题,相信很多人对win11安全模式怎么进都不是特别的了解,因此呢,今天就来为大家分享下关于win11安全模式怎么进以及win11开机强制进入安全模式重置的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一

    2023-07-30
  • 钱包里放一物竟能招财,个人财运不好怎么招财

    内容导航:新买的钱包怎么做招财?放一样东西就够了钱包里放什么东西能增加财运钱包里放哪些东西能旺财钱包里放什么招财夫妻不和烧一块钱能转运?求财咒语8个字新买的钱包怎么做招财?放一样东西就够了还想要了解》》坐吃山不空的旺财风水布局如果

    2023-11-02
  • 麦当劳星球起航虾虾堡多少钱一个

    麦当劳每隔一段时间都会推出更多新品,星球起航虾虾堡就是六一期间的一款新口味的汉堡,它的个头比较大,里面的内容也比较丰富,吃起来口感很特别,有菠萝的清香口感,还有虾肉的鲜香,深受年轻人喜欢。麦当劳星球起航虾虾堡多少钱一个售价:34元一个麦当劳

    百科常识 2023-09-12
  • 股票外盘大于内盘是什么意思

    1、外盘大于内盘,说明当前想买的大于想卖的。2、外盘,是指主动去适应卖方的价格而成交的,即委托以卖方价格成交,在分时成交明细中以b做标识。内盘是指即委托以买方价格成交,主动去适应买方的价格而成交的,即委托以买方价格成交,在分时成交明细中以s

    百科常识 2023-10-19
  • 黄家驹什么时候出道(黄家驹原名叫什么)

    大家好,本篇文章为大家解答以上问题,相信很多人对黄家驹什么时候出道都不是特别的了解,因此呢,今天就来为大家分享下关于黄家驹什么时候出道以及黄家驹原名叫什么的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录一览1、

    2023-08-01

联系我们

qq:65401449

在线咨询: QQ交谈

邮件:65401449@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信