大厂面试题之腾讯阿里公司面试题解析

本文提供了腾讯和阿里的面试精选题目,涵盖了进程间通信、协程、内存泄露、数据结构等多个方面,并给出了部分答案。文章强调了知识深度在面试和工作中的重要性,同时也指出了一线公司对技术深度的需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天给大家解答腾讯阿里面试题,需要大厂更多面试题和解析的可以私信我666免费领取
话不多说直接进入主题

阿里面试题精选

1、进程间通信方式
2、什么是协程
3、内存泄露是怎么回事
4、程序计数器,引到了逻辑地址(虚地址)和物理地址及其映射关系
5、数组和链表的区别
6、二叉树的深度优先遍历和广度优先遍历的具体实现
7、堆的结构
8、bitmap对象的理解
9、什么是深拷贝和浅拷
10、对象锁和类锁是否会互相影响
11、looper架构
12、自定义控件原理
13、ActivityThread,Ams,Wms的工作原理
14、Java中final,finally,finalize的区别
15、一个文件中有100万个整数,由空格分开,在程序中判断用户输入的整数是否在此文件中。说出最优的方法
16、两个进程同时要求写或者读,能不能实现?如何防止进程的同步?
17、volatile 的意义?
18、烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?

阿里面试题精选解析

1、进程间通信方式

通过Intent在Activity、Service或BroadcastReceiver间进行进程间通信,可通过Intent传递数据
AIDL方式
Messenger方式
利用ContentProvider
Socket方式
基于文件共享的方式

2、什么是协程

我们知道多个线程相对独立,有自己的上下文,切换受系统控制;而协程也相对独立,有自己的上下文,但是其切换由自己控制,由当前协程切换到其他协程由当前协程来控制。

3、内存泄露是怎么回事

由忘记释放分配的内存导致的

4、程序计数器,引到了逻辑地址(虚地址)和物理地址及其映射关系

虚拟机中的程序计数器是Java运行时数据区中的一小块内存区域,但是它的功能和通常的程序计数器是类似的,它指向虚拟机正在执行字节码指令的地址。具体点儿说,当虚拟机执行的方法不是native的时,程序计数器指向虚拟机正在执行字节码指令的地址;当虚拟机执行的方法是native的时,程序计数器中的值是未定义的。另外,程序计数器是线程私有的,也就是说,每一个线程都拥有仅属于自己的程序计数器

5、数组和链表的区别

数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中。同样的道理,如果想删除一个元素,同样需要移动大量元素去填掉被移动的元素。如果应用需要快速访问数据,很少或不插入和删除元素,就应该用数组。
链表恰好相反,链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。比如:上一个元素有个指针指到下一个元素,以此类推,直到最后一个元素。如果要访问链表中一个元素,需要从第一个元素开始,一直找到需要的元素位置。但是增加和删除一个元素对于链表数据结构就非常简单了,只要修改元素中的指针就可以了。如果应用需要经常插入和删除元素你就需要用链表数据结构了。

**6、二叉树的深度优先遍历和广度优先遍历的具体实现
**
http://www.i3geek.com/archives/794

7、堆的结构

年轻代(Young Generation)、年老代(Old Generation)和持久代(Permanent
Generation)。其中持久代主要存放的是Java类的类信息,与垃圾收集要收集的Java对象关系
不大。年轻代和年老代的划分是对垃 圾收集影响比较大的。

*8、bitmap对象的理解
*
http://blog.youkuaiyun.com/angel1hao/article/details/51890938

9、什么是深拷贝和浅拷

浅拷贝:使用一个已知实例对新创建实例的成员变量逐个赋值,这个方式被称为浅拷贝。
深拷贝:当一个类的拷贝构造方法,不仅要复制对象的所有非引用成员变量值,还要为引用类型的成员变量创建新的实例,并且初始化为形式参数实例值。这个方式称为深拷贝

10、对象锁和类锁是否会互相影响

对象锁:Java的所有对象都含有1个互斥锁,这个锁由JVM自动获取和释放。线程进入synchronized方法的时候获取该对象的锁,当然如果已经有线程获取了这个对象的锁,那么当前线程会等待;synchronized方法正常返回或者抛异常而终止,JVM会自动释放对象锁。这里也体现了用synchronized来加锁的1个好处,方法抛异常的时候,锁仍然可以由JVM来自动释放。

类锁: 对象锁是用来控制实例方法之间的同步,类锁是用来控制静态方法(或静态变量互斥体)之间的同步。其实类锁只是一个概念上的东西,并不是真实存在的,它只是用来帮助我们理解锁定实例方法和静态方法的区别的。我们都知道,java类可能会有很多个对象,但是只有1个Class对象,也就是说类的不同实例之间共享该类的Class对象。

Class对象其实也仅仅是1个java对象,只不过有点特殊而已。由于每个java对象都有1个互斥锁,而类的静态方法是需要Class对象。所以所谓的类锁,不过是Class对象的锁而已。获取类的Class对象有好几种,最简单的就是MyClass.class的方式。
类锁和对象锁不是同1个东西,一个是类的Class对象的锁,一个是类的实例的锁。也就是说:1个线程访问静态synchronized的时候,允许另一个线程访问对象的实例synchronized方法。反过来也是成立的,因为他们需要的锁是不同的。

11、looper架构

​http://wangkuiwu.github.io/2014/08/26/MessageQueue/

12、自定义控件原理

http://www.jianshu.com/p/988326f9c8a3

13、ActivityThread,Ams,Wms的工作原理

ActivityThread: 运行在应用进程的主线程上,响应 ActivityManangerService 启动、暂停Activity,广播接收等消息。
ams:统一调度各应用程序的Activity、内存管理、进程管理

14、Java中final,finally,finalize的区别

final 用于声明属性,方法和类, 分别表示属性不可变, 方法不可覆盖, 类不可继承.
finally 是异常处理语句结构的一部分,表示总是执行.
finalize 是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等. JVM不保证此方法总被调用.

需要大厂更多面试题和解析的可以私信我666免费领取

17、volatile 的意义?

防止CPU指令重排序

**18、烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?
**
先用2根绳子,其中1根一头点火,另1根两头点火,当第2根烧完的时候(即半小时),把第1根的另一头也点火,则当第1根烧完的时候,时间为45分钟;再另外用第3根绳子两头同时点火,烧完为30分钟,加起来为1小时15分钟。

腾讯公司面试题精选

1、2000万个整数,找出第五十大的数字?
2、从网络加载一个10M的图片,说下注意事项
3、自定义View注意事项
4、项目中常用的设计模式
5、JVM的理解

腾讯面试题精选解析

1、2000万个整数,找出第五十大的数字?

思路:通过冒泡、选择、建堆方法

2、从网络加载一个10M的图片,说下注意事项

图片缓存、异常恢复、质量压缩

3、自定义View注意事项

渲染帧率、内存

4、项目中常用的设计模式

单例、观察者、适配器、建造者

5、JVM的理解
http://www.infoq.com/cn/articles/java-memory-model-1

那除了这种因素外,我们怎么做才能更大概率的进入一线公司呢?

还有一个比较重要的因素就是知识的深度。我认为深度优于广度,广度通过看各种文章都能了解,但一旦碰到实际问题,这时候往往靠的是自己的知识深度。比如,Java程序猿都知道Java是跨平台的,因为会编译成和平台无关的字节码,但是有多少人会知道是怎么编译的?如果不知道虚拟机运行原理,就不可能做出手淘的Atlas容器框架。再比如,很多人知道四大组件职责都是什么,还会些性能优化,但是如果不知道Framework层系统服务原理,就做不出插件化框架。

因为一线公司业务的复杂度也决定了业务的深度,如果没有较好的深度探究能力,是很难胜任的,所以知识的深度也很重要。

极客精神加上某一领域知识的深度能力,就可以达到一线公司标准了。面试中非理性因素也有较大比重,但是这种东西是我们没办法掌控的,如果因为这种因素失败了,也没必要气馁。我认为能力是和回报成正比的,就算此刻没发生,下一刻也会出现,只要掌握了我们该掌握的能力,总有一天会进入我们理想的公司。

需要大厂更多面试题和解析的可以私信我666免费领取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值