阿里电话面试笔记
来源:互联网 发布:数据标准化-1到1 编辑:程序博客网 时间:2024/05/05 08:27
阿里电话面试
20150715 13:56
正值炎热的下午,坐在实验室编写几个前端的代码,一个电话过来,一看号码后面一串8,还以为是广告,接起来之后,对方介绍:我是支付宝的,现在方便么,可以问你几个问题么。此时才反应过来,是阿里的电话面试。下面是面试详细过程,拿出来分享一下,希望给大家借鉴。
阿里:先自我介绍一下吧
我:。。。。我是来自XXX学校的一位在读研究生,从XXXXXX。。。。balabala介绍了大概2分钟。
阿里:好的,我看你并不是计算机专业的(备注一下:本人专业本科工程力学,研究生测控),为什么会做软件呢
我:。。。balabala,讲了一些我对软件如何充满热情。所以去了搞软件开发的实验室学习等等
阿里:讲一下你做过的一些Android APP开发的东西吧
我:我以前开发过一些与可穿戴式设备相关的APP,主要是通过蓝牙或者wi-fi与硬件设备进行数据交互。然后通过HTTP将数据以JSON的形式上传到服务器,并在APP上做相应的展示。
阿里:那你能讲一下android 2.0 和4.0 的区别吗
我:android 4.0配对机制跟android2.0有所区别,不像2.0那么麻烦,需要配对密码等等,4.0先扫描,后连接,然后去发现服务,再取发现服务对应的特征值,每个服务和特征值对应一个唯一的UUID,通过这个UUID去读写characteristic,进而实现数据读写
阿里:你能讲一下android 4.0功耗方面的问题么
我:在手机端没有测过,在可穿戴那边,因为是硬件,测过工作时的电流,跟2.0对比,确实功耗很低,电池待电时间比2.0要长(我是不是在答非所问呢。。。)
【。。。。。中间有些对话记不清了,反正就扯到绘图上来了】
阿里:你使用curve来自己编写图形控件的,那么讲一下curve使用的步骤吧
我:比如要绘制一个折线图,先用curve绘制一些不便的东西,比如背景格子等等,然后给外界提供一个接口,可以去设置哪些可变的东西,比如坐标间距,曲线的颜色,粗细等等,然后外界只要实现接口,然后进行相应的设置,并且提供数据,curve按照这些设置进行绘图就可以
阿里:那你绘制的都是一些静态的图,动态的图怎么去实现呢
我:如果有数据更新,则通知绘图对象去全屏刷新绘图区,我感觉我的这种方案效率不高,还在研究更好的解决方案
阿里:是的,那好,我再问你一些其他的问题,你能讲讲Handler的实现原理么
我:(有些懵,确实不知道啊)比如一个多线程中又数据更新要通知UI线程进行显示,则可以使用handler来send一个message到UI线程,UI线程拿到mesage之后再来更新显示。
阿里:那这是Handler的用法,你知道它的实现原理么
我:(确实不清楚啊,只能说)这个我不是很清楚,但我的理解,Handler的实现原理跟广播(boardcast)是差不多的,都可以实现一个线程发生变化,来通知另外一个线程。
阿里:好,没关系,那我问一些线程方面的问题吧,什么是进程,什么是线程
我:进程就是每开启一个应用程序,就是一个进程,每个应用程序中会包含很多线程,比如UI线程,网络访问线程,蓝牙通讯线程等等
阿里:讲一下线程的死锁
我:就是两个人(不知道怎么表达只能这么说),我就用两个人来表示吧
阿里:(呵呵)好的。
我:两个人同时要去访问一个对象,如果这个对象正在被其他人访问,则必须等那个人访问结束后,才能给这两个人去访问。这就是我对死锁的理解
阿里:好,那怎样保证线程访问安全呢,比如A,B同时去访问一个对象
我:(这里我懵了,这不是我对前一个问题的回答么)不好意思,我听不大清楚,我重复下您刚才的问题:XXXXX(重复了一下)
阿里:对,是的
我:我想的一种方案,就是给这个被访问的对象,copy一个副本,这样访问和操作副本就不会影响到原来的对象了
阿里:但是这样的话,原来对象如果更新了,副本不会更新,那个操作副本的就拿不到最新的这个对象了啊
我:(停顿了几秒)不好意思,我在考虑
阿里:没事,不着急,你仔细想想
我:那就是之前提到的死锁了,当A访问这个对象的时候,先把A锁住,B无法访问,只有等A访问完了,B才能访问
阿里:是的,就是死锁
阿里:你知道local thread么
我:这个不清楚,因为最近都在开发IOS,有一段时间没有做android了。
阿里:我看你做过java web ,android和java web都要用到线程,IOS也是,怎么会不清除线程的东西呢
我:做java web是后面才接触到的,用线程不是很多(这回答,太low了)
阿里:那你说下andorid有哪几种数据存储的方式
我:SQLite,还有直接写文件
阿里:其他的呢
我:(懵了几秒,我知道还有一个preferXX的,但是实在想不起来了),其他的不是很清楚了(这个地方答的很不好,这个问题其实不难,但一时就是想不起来了)
阿里:好的,最后,我再问一个问题,讲一下ANR是什么
我:(这个问题回答的还不错)ANR ,就是application not response ,字面意思就是应用程序无响应,效果就跟我们经常看到的程序挂掉是一样的
阿里:那是什么原因导致关掉呢
我:如果线程发生阻塞,当阻塞时间超过一定时间,就会挂掉
阿里:是什么线程呢
我:UI线程,也就是主线程
阿里:恩,是的,那么这个阻塞的最长时间是多少呢
我:大概5到10秒
阿里:恩,差不多,好的,那我的问题就先这些,你再等通知吧
我:好的,谢谢
总结一下:
1 Android 基础知识不扎实
2 面试之前一周多时间,一直在复习IOS,以为他要问IOS,结果全是android~~~
3 面试过程中也有些小紧张,发挥不是特别好
- 阿里电话面试笔记
- 阿里云电话面试
- 阿里电话面试
- 电话面试之阿里
- 阿里前端电话面试
- 阿里电话面试总结
- 阿里电话面试详解
- 阿里电话面试
- 阿里电话面试经历
- 阿里电话面试
- 阿里实习生电话面试
- 阿里电话面试
- 阿里电话面试
- 20170815阿里电话面试
- 阿里云实习生电话面试
- 20130419阿里电话面试记录
- 阿里电话面试:线程状态
- 阿里电话面试问题整理
- xib的注意事项
- java多线程编程之捕获子线程异常示例
- iOS - 正则表达式判断邮箱、身份证..是否正确
- 定义结构体时变量名后的冒号和数字
- VC中CString和WPARAM之间的相互转换
- 阿里电话面试笔记
- Php基础数组篇
- poj1144
- virtualenv 环境下 Flask + Nginx + Gunicorn+ Supervisor 搭建 Python Web
- 导出excel——入门
- Java创建多线程的两种方式对比
- [Win32SDK基本]ListView Controls(2)Report (details) View 详解(续)
- Swift 集合类型(Collection Type) 之 set(官方文档翻译及总结)
- 最长子序列(Longest-Common-Subsequence Problem)