面试经历——阿里巴巴移动端开发实习生

面试经历——阿里巴巴移动端开发实习生

简述

我是大三的学生(广东二本、外省称为三本的学校),简历好像是4.17投的,在拉勾网,当时投的是一个阿里UC-安全中心发布的招聘信息。过了两天,面试状态变为待沟通,发了邮件和短信给我。我点了邮件信息中的网址进去,是阿里校招的官网,然后不知看到我投的简历变成了拉勾网那个发布招聘的人的内推了。但是还是有素质测评和笔试等着我。笔试我还没做呢,但是昨天打电话过来邀约我面试,我问了下是面试我后端还是移动端,他说面试移动端。其实前两天他们有个事业部的人就打电话给我,说他是移动端管理校招的,说他们那边已经快结束校招了,他最近在检查一下简历,结果发现了我的简历,说看起来简历还不错,就打电话来问我面试情况了。他说看我简历中的一个放到github的安卓项目不错,问我要不要面试看看。(但是这是移动端的面试【黑人问号脸??】,我明明投的是后台研发,简历怎么到移动端的开发去了??虽然我前后端,移动端都有开发过,但是简历中我写的是意向Java后端,还是接受面试吧,珍惜一下面试机会)

面试问题

  1. 描述项目

  2. 描述项目中遇到的问题与如何解决

  3. 说一下Android中的Handler

    答:这个问题,我今天刚好看了一下《第一行代码》,按着印象把书上描述Handler的流程说了一遍

  4. 如果拍照的得到的图片很大怎么处理

    答:这个我没做过,要我说的话,思路是对图片进行压缩

  5. 说一下Java中的volatile关键字

    答:volatile关键字在多线程环境下使用,被它修饰的变量在,在内存中会刷新该变量的值,使得其他线程拿到的是最新的值,保证了可见性,但是不能保证原子性。

  6. 说一下HashMap

    答:HashMap在JDK1.7和JDK1.8中实现方式是不同的,在1.7中采用的是数组加链表的方式,在1.8中使用的数数组加链表加红黑树,加了红黑树是为了减少搜索时间,因为加入的数据多了,链表就长了嘛,就是当超过阈值时,就转化为红黑树,可以减少搜索时间。

  7. 说一下ConcurrentHashMap,实现原理

    答:CurrentHashMap底层实现跟HashMap差不多,也是采用了数组加链表加红黑树,但是他加入了分段锁,锁的粒度更小,使得并发性能更好。

  8. 说下单例模式,双锁检查

    答:单例模式是有一个本类作为自己的属性,然后有一个获取实例的方法需要判断该对象是否等于null,如果等于null就new一个对象并返回,如果不为null就直接返回该对象实例。面试官:加入双锁检查的怎么实现?我:这个我不记得怎么实现了,很久前看过的知识点,好像是加了syncronized的关键字。(尴尬,我现在不记得了,我以前还亲手写过的)

  9. 那你说下Android中的syncronized关键字的使用与Java中的有什么区别

    答:在Android有什么区别我倒没有了解过,但是在Java中我就知道,它是在多线程环境下用来锁住资源的,获得对象锁之后,其他线程不能访问该资源。

  10. 进入syncronized的对象获得锁之后,状态的变化,多线程环境下,其他锁的状态如何

    答:获得对象锁之后的线程编程运行状态,其他过来的线程就是阻塞状态,阻塞状态的线程会变回就绪状态,当获得对象锁的线程执行完后也会变成阻塞状态,然后变成就绪状态。

  11. Native有了解过吗

    答:有了解过一点,使用Native可以调用操作系统提供的原生API

  12. C/C++还记得吗

    答:还记得一点点,大一时学的,现在还记得一部分吧,很久没用过了。(他没继续问)

  13. NIO,AIO说一下概念。

    答:NIO是非阻塞式的IO,正如他的名字一样Non-Blocking I/O,是非阻塞式的...(记不得概念了),AIO的话是异步的I/O,好像是NIO的改进版,好像Netty网络框架中之前是用过AIO,后来没有用了。(记不得那么多了)

  14. 你刚刚有提到过Netty,你可以说一下吗

    答:我只是知道有这么个网络框架,但是我没有用过。

  15. 你了解过Socket吗

    答:我知道Socket是用在聊天的实现方式中的,但是我没有学过Socket。

  16. 电商APP中(如淘宝、天猫、京东等),进入首页后,往下滑动,有大量数据需要加载,此时该如何优化?(客户端上如何优化)

    答:(这个我基本上都是后端的角度上回答的)使用Redis缓存,还有也可以使用Nginx做动静分离,把静态资源放在Nginx服务器上,以减轻后端服务器的压力。面试官:那端呢,在端(客户端)上怎么解决?我:这个我没有做过,真没有做过。

  17. 在安卓项目中有使用到哪些第三方库,有读过源码吗

    答:使用过QMUI的UI库,网络请求的OkHttp的库。面试官:有读过源码吗?我:没有,只是对网络请求做了简单的封装,在项目中使用。

  18. 你前后端都做过,那你说一下HTTP协议

    答:HTTP协议是基于TCP协议之上的应用层的超文本传输协议。

  19. HTTP1.0和HTTP2.0的区别

    答:面试官:那HTTP1.0和HTTP2.0有什么区别?(这期间他说2.0,我是1.1他说2.0有了解过吗?喔对对对,是有2.0(大写的尴尬,我之前只记着1.0和1.1))我:他们之间的差别我没有了解过。(现在写面经,我突然又想到了他们的区别,是加入了长连接的支持。【我最近脑子不记事,该打】)

  20. 说一下TCP的三次握手,为什么需要三次握手,两次不行吗?

    答:发起连接时,从客户端发起第一次握手,带一个SYN过去到服务端,第二次握手,服务端带着SYN+ACK给客户端,客户端接收到消息后,再发一个ACK到服务端,这是第三次握手,现在已经完成连接了。面试官:那么在这个过程中,前两次握手不就可以建立连接了吗?为什么还要第三次握手?我:这个我不好怎么回答,我举个例子吧,就拿聊天做一个例子吧,以前我们QQ聊天时,喜欢第一句问“在吗?”,这就相当于第一次握手,对方回一句“嗯,在”,这是第二次握手,我回“好的,那我们开始聊天吧”,这是第三次握手。如果不回第三句话的话,对方就不知道你还在不在,就不能保证一定是连接了。(其实我也不知道这个答案,这个是我瞎编的理由)

  21. 说一下TCP释放连接的四次握手

    答:服务端发起释放连接,发送SYN给客户端...(这里我已经语无伦次了,被上一个问题问乱了,我就说我不是太记得这个过程了)

  22. 你有什么想问我的吗?有什么想了解的吗?

    答:就刚刚那个四次握手的过程,记得不是很清楚了,你可以给我讲讲吗?面试官:这个你自己去了解吧。我:好的,我后面查查资料了解一下。(尴尬,其实现在想想,四次握手还是挺简单的,当时脑抽了,脑子就记得那四条线是怎么画的,但是不记得中间是怎么描述的来着了)。面试官:那你还有其他想问我的吗?我:我想知道我的简历怎么分到你们这个事业部来了?是随机分的吗?面试官:是投递过来的。我:【黑人问号脸??(这不是废话吗)】我投简历的时候,好像没得选哪个事业部的呀。面试官:事业部分过来我们这边。我:好的,其实哪个事业部我倒无所谓,只要能面试合适的工作岗位就行。

话外音

上面我的回答可能不是很准确,各位牛友看看就好,不要喷,(我这种学校的能收到阿里的电话面试我已经挺开心的了)。其实我这段时间复习的是后端的知识,谁知道过来的是移动端的面试通知,我几个月没有做搞安卓开发了【捂脸】,搞得我今天赶紧把《第一行代码》的电子书拿出来快速过了一遍。把之前的安卓项目也重新看一遍。对还好今天的面试有点帮助。这个面试官其实也知道我是意向做Java后端的,所以今晚问的问题也不是很多关于安卓的内容,更多的是问Java的知识,后端的内容他基本上没问,今晚问的问题也都还好吧,挺基础的,也没往深处问。最后面试官说:我把你的情况上报一下吧。不知道有没有希望喔,如果有二面的话,我不一定能过了,因为可能会问算法了,算法对我来说真是一座大山,我就是个渣渣【捂脸】,对于我这种数学非常差的人来说,学习算法简直就是...一言难尽。还是回去好好补算法吧,咬牙磨齿也要啃下去。

#阿里面试##阿里巴巴#
全部评论
请问有二面吗
点赞 回复 分享
发布于 2022-03-24 01:08

相关推荐

耀孝女:就是你排序挂了
点赞 评论 收藏
分享
评论
5
18
分享
牛客网
牛客企业服务