阿里电话面试笔记

来源:互联网 发布:数据标准化-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 面试过程中也有些小紧张,发挥不是特别好



0 0
原创粉丝点击