腾讯Android校招一面经 10/19(凉)
居然腾讯还约我面试,真是神奇,不过估计就是来刷个KPI了。自己太久没面试生疏了很多。
开局自我介绍。
聊实习以及项目。
Android
1、如何分析一个Crash?
2、Java层Crash如何捕获?
3、NativeCrash如何捕获?
4、AIDL了解嘛?
5、讲一下Binder机制。
Binder是一种Android系统的IPC方式,本质上是一种C/S架构的通信方式。
Binder机制在使用时的一个核心角色就是ServiceManager,主要负责在通信过程中的传输中介。
Binder在通信时就会通过Binder驱动在ServiceManager中进行注册,注册完成后下次通信就会通过ServiceManager的接口去ServiceManager获取相关service并进行通信。
Binder机制的通信原理是通过在内核空间中开辟一块内存,将某进程的一块空间映射到内核空间中,然后发送方就通过调用copy_from_user()将数据传输到该进程空间中,藉此来达到一次复制完成通信的过程。
值得注意的是发送方进程通过系统调用 copy_from_user() 将数据 copy 到内核中的内核缓存区。发送方是主动方。
6、Binder机制是如何实现一次复制实现通信的?
Binder机制的通信原理是通过在内核空间中开辟一块内存,将某进程的一块空间映射到内核空间中,然后通信方就通过调用copy_from_user()将数据传输到该进程空间中,藉此来达到一次复制完成通信的过程。
7、看过Binder的源码嘛?
8、没有AIDL能够实现Binder机制那样子的进程通信嘛?
9、OkHttp讲一下你的了解。
Java
1、讲一下Java的异常机制。
2、讲一下JVM的角度是如何处理Java异常的。
3、讲一下类加载的过程。
手撕部分:
三个线程轮流打印ABC,给了十分钟,有点紧张,有个问题没做出来,难受。
反问环节:
Q:有什么是我需要改进的。
A: 代码调试能力需要加强,Binder之类的知识要学会去看源码,这样才能更好的排错。
结束。
妈的,还要我去看Android的源码,这我哪里做得到啊,手撕题有点紧张没做出来着实可惜,凉凉,安心准备去百度了。