Android 大厂面经一

此文无广,收集并写下来的目的是为了自己查缺补漏,如果能帮到迷茫的你,不胜荣幸。

一.Java的Object类有哪些方法

1.getClass()方法 在运行时获取,返回一个class对象。通过这个对象可以获取他的属性、方法

2.hashCode()方法 返回对象的哈希值。一般用于比较两个对象的哈希值是否相等

3.equals()方法 返回布尔类型。一般用途是比较两个对象的内存地址是否相等,在没有重写的情况下等价于"=="

4.clone()方法 返回一个对象。用途是复制一个对象,新开辟一个相同大小的空间,生成一个和源对象相等的对象

5.toString()方法 返回所属类的类名 + @ + hashCode值。这个返回值一般没有业务需求,所以一般在具体类里要重写toString方法,满足个人使用需求。

6.wait()方法 没有返回值。让当前线程进入等待状态,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法

7.notify() 方法 没有返回值。任意唤醒一个在此对象监视器上等待的线程。

8.notifyAll() 方法 没有返回值。用于唤醒在该对象上等待的所有线程。

二.为什么要有hashCode方法,hash算法的原理是什么,在Java中哪些地方用到,HashMap的源码

1.HashCode方法是为了获得HashCode,而HashCode的存在主要是为了查找的快捷,hashCode()被设计用来使得哈希容器能高效的工作。也只有在哈希容器中,才使用hashCode()来比较对象是否相等,但要注意这种比较是一种弱的比较,还要利用equals()方法最终确认。

2.Hash算法的原理是把输入空间的值映射到Hash空间内,可用于安全加密、数据校验、负载均衡等
3.HashMap源码解析请移步 HashMap底层实现和原理(源码解析)_裸睡的鱼-CSDN博客_hashmap的底层原理Note:文章的内容基于JDK1.7进行分析,1.8做的改动文章末尾进行讲解。大家可以看一下:https://www.imooc.com/article/267756一、先来熟悉一下我们常用的HashMap1、概述HashMap基于Map接口实现,元素以键值对的方式存储,并且允许使用null 建和null 值, 因为key不允许重复,因此只能有一个键为null,另外HashMap不...https://blog.csdn.net/qq_41345773/article/details/92066554

三.Java有几种锁,Synchronized与Lock有什么区别,Lock的实现原理,有没有碰到死锁的情况

1.Java锁 【面试】你知道Java里有多少种锁吗?(15种锁最全总结)_程序员小乐-CSDN博客点击上方 "程序员小乐"关注,星标或置顶一起成长每天凌晨00点00分,第一时间与你相约每日英文I hate hearing something that absolu...https://blog.csdn.net/xiaoxiaole0313/article/details/1039005852. 首先synchronized是java内置关键字,在jvm层面,Lock是个java类;synchronized无法判断是否获取锁的状态,Lock可以判断是否获取到锁;synchronized会自动释放锁(a 线程执行完同步代码会释放锁 ;b 线程执行过程中发生异常会释放锁),Lock需在finally中手工释放锁(unlock()方法释放锁),否则容易造成线程死锁; 用synchronized关键字的两个线程1和线程2,如果当前线程1获得锁,线程2线程等待。如果线程1阻塞,线程2则会一直等待下去,而Lock锁就不一定会等待下去,如果尝试获取不到锁,线程可以不用一直等待就结束了;synchronized的锁可重入、不可中断、非公平,而Lock锁可重入、可判断、可公平(两者皆可);Lock锁适合大量同步的代码的同步问题,synchronized锁适合代码少量的同步问题。

3.Lock实现原理

Java锁--Lock实现原理(底层实现)_qpzkobe的博客-CSDN博客_java lock实现原理这一篇比上一篇讲的要深入,也一块儿转载过来放在这里。关于java lock的底层实现原理,讲的有点深,转载学习!Lock完全用Java写成,在java这个层面是无关JVM实现的。在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWriteLock(实现类ReentrantReadWriteLock),其实现https://blog.csdn.net/qpzkobe/article/details/785866194.最好自己写一个死锁来理解

Java 实例 – 死锁及解决方法 | 菜鸟教程Java 实例 - 死锁及解决方法 Java 实例 死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。 java 死锁产生的四个必要条件: 1、互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用2、不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放。3、请求和保持,即当资源请求者在请求其他的资源的同时保..https://www.runoob.com/java/thread-deadlock.html

四.Android源码中用到了哪些设计模式,举例说明

1.属于平时码代码途中多观察多思考才能发现android源码中使用到的设计模式(创建型) - 简书1.单例模式 1.1定义 确保某个类只有一个实例,而且自行实例化并向整个系统提供者个实例。 1.2单例的形式 饿汉模式:第一次就加载,用空间换时间。 懒汉模式:只有在调用的时...https://www.jianshu.com/p/02fe82f9f5b0

五.一个Android应用正常启动有多少个线程?

Android一个APP里面最少有几个线程 - 简书参考 https://www.jianshu.com/p/92bff8d6282fhttps://www.jianshu.com/p/8a820d93c6aa 线程查看 An...https://www.jianshu.com/p/a078bc1623b9

六.Binder机制的实现思想

简单理解Binder机制的原理_augfun的博客-CSDN博客_binder机制原理一、概述Android系统中,涉及到多进程间的通信底层都是依赖于Binder IPC机制。例如当进程A中的Activity要向进程B中的Service通信,这便需要依赖于Binder IPC。不仅于此,整个Android系统架构中,大量采用了Binder机制作为IPC(进程间通信)方案。当然也存在部分其他的IPC方式,如管道、SystemV、Socket等。那么Android为什么不使用这...https://blog.csdn.net/augfun/article/details/82343249

七.简单描述Https的实现思路

郭神的

写一篇最好懂的HTTPS讲解_郭霖的专栏-CSDN博客_https详解大家早上好,有段时间没更新文章了。其实疫情期间在家呆了一个多月的时间不能出门,时间倒是挺多的,我也利用这段时间写了几篇新文章。但由于新写的这些文章大都是配合着新书中的内容的,受疫情的影响我写的新书迟迟不能出版,导致这些文章也无法发布,等得我好是焦急。希望疫情早日结束,大家都能快点恢复到正常的生活当中。那么今天先发布一篇和Android无关的技术文章。https这项技术现在已经应用得非常广泛了。随着苹果、Google等各大互联网领头企业纷纷在自己的操作系统、浏览器等主流产品中强制要求使用httpshttps://blog.csdn.net/guolin_blog/article/details/104546558?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164563494716780271945795%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=164563494716780271945795&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-104546558.nonecase&utm_term=https&spm=1018.2226.3001.4450

八.描述下快速排序的思想,时间复杂度?什么场景对应着最坏情况?

快速排序的基本思想_qiuyushuofeng的专栏-CSDN博客_快排思想原文:https://blog.csdn.net/insistgogo/article/details/77850381、快速排序的基本思想: 快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。2、快速排序的三个步骤:(1)选择基准:在待排序列中,按照某种方...https://blog.csdn.net/qiuyushuofeng/article/details/88094988

九.给定无序数组和一个值,找到两个数和为值的元素,不能使用额外空间复杂度(不要使用HashMap)

给定一个无序数组和一个目标值,找出数组中两个数之和等于目标值的所有组合_lewele001的博客-CSDN博客题目:给定一个无序数组和一个目标值,找出数组中两个数之和等于目标值的所有组合,并给出时间复杂度。假设数组是[3,5,3,5],目标值是8。答案是否可重复,题里没说,所以分3种情况,如下:1.重复。答案是【0,1】【0,3】【1,2】【2,3】,序号组合,共4种组合。解法如下:1.1.嵌套遍历。时间复杂度:O(n^2)。1.2.哈希法。键存数组元素值,值存出现次数。时间复杂度:O(n)。1.3.排序+双指针夹逼。时间复杂度:O(nlogn)。2.半重复。答案是【0,1】【2,3】,也可能是【https://blog.csdn.net/lewele001/article/details/119830965

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值