欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android社招面试题整理

程序员文章站 2022-08-11 08:02:39
Android:activity,fragment生命周期启动模式:appA启动appB栈的变化RecyclerView与ListView的原理,观察者模式,复用描述一下Handler的原理一个线程可否有多个Handler,怎么保证只有一个Looper由此问题衍生出Threadlocal,面试官问Threadlocal如何保证只有一个对象,这里我答的不是很好,Threadlocal其实在Android的looper里是判断了只有一个的逻辑,但真正的使用并不是这个特性应该是....

Android:

activity,fragment生命周期

启动模式:appA启动appB栈的变化

RecyclerView与ListView的原理,观察者模式,复用

布局优化怎么做的?LinearLayout和RelativeLayout在性能上的区别。

activity从后台进程切换到前台经历的生命周期;

listview左边网络图片右边文字的优化。

 

描述一下Handler的原理

一个线程可否有多个Handler,怎么保证只有一个Looper

由此问题衍生出Threadlocal,面试官问Threadlocal如何保证只有一个对象,这里我答的不是很好,Threadlocal其实在Android的looper里是判断了只有一个的逻辑,但真正的使用并不是这个特性

应该是一个 Threadlocal 对象在 ThreadlocalMap里对应一个值

 Looper和handler的关系;

 

自定义view的步骤

自定义view:讲了项目中的实际应用,顺便说了下事件冲突和解决

mvc/mvp/mvvm:补充说了对职责的理解

 

写一个单例;

新特性

 

对kt的看法

 

EventBus是如何实现事件通知的?

Glide的缓存?Glide是如何加载Gif图片的?

RxJava的操作符?项目中是如何使用RxJava的?

 

View的事件分发

给出一个activity的布局:activity里包含viewgroup1,viewgroup1里包含viewgroup2,viewgroup2里包含button,问touch事件的传递和处理机制;

WebView的优化,如果出现了数据的交互该怎么做?(AIDL),Binder怎么实现进程间通信的?mmap的模型?

内存优化?RecyclerView的缓存机制,如何优化?


android问的很基础但是平时有可能不注意的,像dpi的算法,onmeasure中不处理wrap_content,就会出现match_parent一样的效果的原因,compilesdk和targetsdk的区别fragment hide show和replace的区别。

JAVA:

比较string="aaa"和string=new string("aaa")。

arraylist,linkedlist,vector效率;

"abcde"字符串在内存中占多大,这些字节在JVM的编码格式

finally和return的顺序。

 

替换多重嵌套的if else写法;

private和static修饰的方法可以重写吗;

类A私有变量i,类B继承A私有变量j,构造方法带各自的变量,哪个编译成功;

接口和抽象类的区别,一个类的能不能多继承,能不能实现多个接口

接口类的非方法能不能被修改?不能,接口类里非方法的类型都是final修饰,所以必须初始化并且不能被修改。

抽象类的变量可以被继承和修改么?可以。

final关键字

 

JNI NDK的了解。

 

lock和synchronized。

线程安全问题,sychronized、lock/unlock的区别使用,公平锁和非公平锁的概念。

sychronized是如何体现公平锁和非公平锁的(CAS、锁自旋)?

 

线程池

线程池的几个参数和意义都描述了一遍,多个线程执行时,核心线程、最大线程、阻塞队列满和不满的情况下执行顺序和过程

怎么解释线程池阻塞队列的阻塞,这里我没太明天面试官对阻塞的理解,答的有点没对口

核心线程是一开始创建还是有任务时创建,

 

HashMap原理,在什么时候扩容(当加入的元素大于阈值threshold后)。 以及线程安全的`HashTable`、`ConcurrentHashMap`的原理。

 

设计模式

单例,工厂,观察者,装饰者。

讲了项目中责任链的应用和自己的理解

 

GC如何标记要回收的内存?GC Roots有哪些?

JVM堆和栈的作用,进程和线程的作用,堆栈和线程进程的对应关系

死锁怎么产生?如何去解决死锁,多个方案

线程同步问题,自增是原子操作吗?如果要做到线程安全的自增要做怎么做?

问到了线程池实现原理。

sleep wait区别,为什么wait是object方法不是thread的方法。、

 

问了不同品牌兼容性怎么处理,屏幕适配。

计算机相关:

问Scoket和Http最大的区别是什么?

TCP会检查包的顺序么,Tcp怎么控制包的发送(滑动窗口)。

看到项目中使用了WebSocket,讲下它和Http的区别?

有没有用过Linux

Http是在哪一层,Https使用了非对称加密还是对称加密?TCP和UDP的区别,为什么UDP不可靠还要使用UDP

拥塞控制和流量控制的区别

操作系统,进程状态,进程间通信方式,网络2种协议,3次握手,http状态码,request内容,还有一个求二叉树宽度的算法。

 

算法:

快速排序,分组算法。

快速排序和冒泡排序的稳定性问题

编程题:将一个分数转化成小数形式输出,因为分数只可能是有限小数或无限循环小数。如果小数是无限循环小数,则使用小括号括起。

这题思路是做while轮除。我界定是否产生了无限循环小数是使用HashTable。

快排的过程,时间复杂度,n*lgn是如何得来的?

排序二叉树的插入,如果插入相同的数,需要做什么保证树可以还原(即不允许丢弃到相同的数)?

两桶油漆,A桶全是红色油漆,B桶全是蓝色油漆,将A桶中取一勺倒入B中,再从B桶中取一勺倒入A中,求A桶的蓝红比例和B桶的红蓝比例,是大于、小于还是等于?

用一个数组实现一个循环队列

给定一个只有“R”“G”“B”三个字母的字符串,用一次遍历基于原字符串将他们以“RGB”的顺序排序好(LeetCode原题)

52张扑克牌,取一张不放回,再取一张, 两张为相同颜色的概率是多少?

有两个数字非常大已经超出了long型的范围,现在以链表的方式存储其中链表头表示最高位,例如1->2->3->4表示1234,请设计一个算法求出两数之和;


智力题:

给一篮子鸡蛋,如何用最少的比对次数找到最大的和最小的鸡蛋, 我的回答是 一开始,随便拿出两个鸡蛋,然后接下来剩下的鸡蛋每拿出一个,就和这两个进行比较,如果比两个中小的鸡蛋小就替换小的那个,如果比大的鸡蛋大就替换掉大的那个,这样比较次数就是  (n-2)*2 ,因为有些鸡蛋只用比一次就行了(因为是最小的就不用往大的比了),所以结果是小于  (n-2)*2的,但我觉得应该还可以更加快....

项目相关:

问上家公司的项目,你的职责/定位/在项目中属于是什么角色。

在开发中遇到的最大的困难?怎么解决的?

之前项目的一些介绍使用了哪些主要技术点,出现该问题是怎么解决的。

项目中的联网模块怎么实现的?UDP和TCP的区别?

让你设计一个类似viewpager的组件,要求增加左上或右上的角度翻页效果。文字内容中的可点击链接是怎么实现的。我大概说了一下思路,面试官说这样做会有问题,我请教他应该怎么做。

发散问题:

为什么选择计算机这个专业。

为什么离职/为什么想换公司

在上一个公司学到了什么

选择公司因素,按优先级排个序

介绍自己/用关键词描述自己

家庭,社会,感情关系

你会想在团队里面承担一个什么样的角色?

代入用户思维和不代入用户思维做产品有什么区别?

平时的爱好是什么?

你觉得一个好胜心过强的人会有什么样的问题?

对我们公司了解多少?有什么想问的?

有没有给自己制定一些计划?对自己的要求有多高?

学习的渠道、方式,有GitHub吗?看什么样的书?

学习是基于公司项目学习,还是个人兴趣学习?

预计到岗时间,期望薪资

 

有什么想问的:

本文地址:https://blog.csdn.net/weixin_37228152/article/details/108111975