美文网首页Android开发经验谈Android开发Android技术知识
底层原理一度作为 Android 大厂面试必问?

底层原理一度作为 Android 大厂面试必问?

作者: 程序老秃子 | 来源:发表于2022-04-18 17:19 被阅读0次

前言

QQ截图20220418165548.png

随着时代的发展。Android开发行业也在不断的完善,其中也出现了许多的开源框架,大部分开发者基本上已经习惯了对其成熟的API进行调用,以此来完成所需的开发要求,随着多次的项目需求被其完美解决,众多的开发者也随之膨胀了起来,但是在一次又一次的面试中,面试官问出一个又一个的底层原理的问题的时候,他们才会看出自身的不足,由于自身的习惯总是一直调用API的原因,对底层原理没有深入了解,那么久必将很难通过大厂的面试,当然也会在日常开发过程中遇到问题,并且没有解决方法

方向

QQ截图20220418165920.png

在开发行业初期,只需要对四大组件,Java基础等相关知识有着一定的了解,便可以轻松的就业,而现在这一套明显已经行不通了,随着各种组件库变的越来越成熟,相关的学习资料越来越多,信息的获取量越来越多

我们越来越不知道该如何找到自己的方向,那么我们到底该如何提升自己呢?如何在众多的信息中找到真正适合自己的信息?如何才能看清这个时代前进的方向呢?

许多人都在迷茫中缓慢前进,时常觉得焦虑,觉得自己无法进步,无法触摸更高的岗位,也由此会认为大厂的要求太高,面试官一直都在为难自己,但是你要明白不进步就意味着淘汰

只有通过对底层原理的考察,面试官才能真正了解到你所拥有的能力是否适合这个岗位,从而能够更好的判断你是否具备着向更高的Android开发者进发的实力,只有真正的认清自己当前的现状,能够积极主动的提升自己,那么你就一定会在众多Android开发者中有着自己的一席之地

小结

一般来说大厂相较于小厂和创业公司而言,会给你很长的时间对工作进行熟悉,学习周期相对而言则会更长

一般小厂和创业公司最多只会给你一周的熟悉时间,有的可能三四天就让你直接上手进行工作,这也是与领导的原因相关,一部分领导会觉得在实际工作中能够更好的熟悉,但其实快速的上手工作并不是什么好事,没有熟悉公司的相关背景,项目业务,技术堆栈,工作流程等等理论,那么在工作中出现问题那也是早晚的事情

所以无论是在大厂还是小厂亦或者是创业公司,进去的第一时间一定要熟悉其公司的项目业务,不熟悉业务,那么你就很难拥有全局观,这样你在以后的实际工作中就会变得盲目

面试真题示例

面向对象和面向过程的区别

● 面向过程是直接将解决问题的步骤分析出来,然后用函数把步骤一步一步实现,然后再依次调用就可以了

● 面向对象是将构成问题的事物,分解成若干个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在解决问题过程中的行为 ● 面向过程思想偏向于我们做一件事的流程,首先做什么,其次做什么,最后做什么

● 面向对象思想偏向于了解一个人,这个人的性格、特长是怎么样的,有没有遗传到什么能力,有没有家族病史。

面向对象的特征有哪些

● 抽象,把现实世界中的某一类东西,提取出来,用程序代码表示

● 封装,把过程和数据包围起来,对数据的访问只能通过已定义的界面

● 继承,一种联结类的层次模型

● 多态,允许不同类的对象对同一消息做出响应

解释下Java的编译与解释共存的现象

● c是预处理 编译 汇编 链接,java和Python都是先编译成字节码再用虚拟机解释执行,但字节码和汇编代码不一样,前者是二进制不可读,后者可读,且两者每句之间不是一一对应的,而汇编代码和生成的c语言目标代码是相对应的

● jit其实也是编译和解释共存,先让解释器执行,搜集分析信息,对频率高的部分得到新的jit编译后的机器指令,再执行该机器指令,所以jit虽然叫编译但并不是针对java源文件,只是取“编译”这个含义

JVM的内存模型问题

● JVM是Java Virtual Machine(Java虚拟机)的简称,是一种用于计算设备的规范,是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的

● cpu高速缓存的出现 cpu发展速度很快,但是内存memory的发展却没那么快,原来的cpu直接和内存做交互的模式,会导致cpu会浪费很多时间在等待上。所以,在cpu中增加了高速缓存(多级),在运行时,会从主内存中获取数据放入高速缓存中做一份数据拷贝,等cpu处理完成之后,再刷新到主内存中

● 多核cpu,如果是单核cpu的话,即使有主内存和cpu缓存的区别,但是是因为单核cpu,所以使用到的高速缓存和主内存中的数据是同一份,也不会造成问题。但是现在的cpu都是多核的,那就存在一份主内存和多份cpu高速缓存,这样就会出现对同一份数据,多个cpu缓存中的数据不一致的情况

Java的类加载问题

● 类的加载由类加载器完成,类加载器通常由JVM提供,这些类加载器也是前面所有程序运行的基础,JVM提供的这些类加载器通常被称为系统类加载器。除此之外,开发者可以通过继承ClassLoader基类来创建自己的类加载器

● 类加载的3个必经阶段是:

加载(类加载器读取二进制字节流,生成java类对象)

链接(验证,分配静态域初始零值)

初始化

由于文章篇幅有限,文档的资料内容较多,其他内容仅以图片形式进行展示

1.png 2.png 3.png 4.png

结语

以上就是我今天向大家分享的内容

更多Android进阶资料,学习笔记,底层源码解析

资料获取方式:+V : ddz3090

Android架构师之路还很漫长,与君共勉

PS:有问题欢迎指正,在评论区留下你的建议和感受


QQ截图20220418170233.png

相关文章

网友评论

    本文标题:底层原理一度作为 Android 大厂面试必问?

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