【面小易-面经10】阿里巴巴Android客户端开发实习生面试经验

简介: 又到了“金九银十”的招聘季,各位小伙伴们是不是也在忙着准备面试呢找工作呢?在接下来的一段时间里,面小易会为大家分享各种面试经验哦!请持续关注我。今天要和大家分享的是一位投递阿里巴巴Android开发实习生同学的面试经验,虽然他最终止步于二面,但是他的面试经验还是值得我们学习的,就让我们一起来看看吧。

“我是面小易,机智又聪明。面试不眨眼,Offer不手软。”

我面小易又来啦,今天要和大家一起分享的是一位投递阿里巴巴Android开发实习生同学的面试经验,这位同学的第一次面试就给了阿里巴巴,虽然最终的结果不尽如人意,但是我们要知道“打铁还需自身硬”,这位同学自己也总结了失败的原因,那就是基础不牢固。

以下为正文

一面

今天上午十点过了五六分钟接到了阿里巴巴的一面的面试电话。我简历投的是Android客户端开发实习生(内推),并且在前一天和HR电话约定了十点面试。

一面的时间是五十六分钟多一点。周围的人一面大部分都过了,按照他们的说法,大都是说的一些项目相关的东西。到了我这里,大概十分钟的项目介绍,三个关于Android的(其中两个是用Cocos2dx开发的),一个用Java写的局域网通信的小项目。剩下的时间都是问的基本知识,总结十分,六分是操作系统(尤其是内存、进程相关的),三分数据结构,一分Android的。

首先在操作系统方面,问了内存、进程间通信方式(IPC)、进程和线程的关系和区别。还问了什么是协程,但是这一点我在面试前并不知道。此外,面试官还问了什么是堆,内存泄露是怎么回事(我扯到野指针了),线程切换(我讲的是进程切换)。还问了下程序计数器,引到了逻辑地址(虚地址)和物理地址及其映射关系。然后还问了编译原理,问了编译的过程(预处理、编译、汇编、链接)。

其次在数据结构方面,先问了数组和链表的区别,又问了二叉树的深度优先遍历和广度优先遍历的具体实现以及堆的结构。

再次问了一些网络相关的问题,比如TCP和UDP的区别、用途,两者比较以及实现上的不同,并且对于这块问的比较细。之后就是Andorid内的进程通讯了,我答的是Handler,然后介绍了它的实现原理和相关的一些类。

我最后问面试官的问题是,为了能胜任这个岗位,需要着重加强哪方面的知识?面试官的回答大概是这样:首先肯定是计算机基础了,包括操作系统,数据结构,计算机网络等,然后客户端方面的话,网络编程方面、多线程方面和架构能力。整个过程感觉比较流畅,十分钟后,阿里的招聘网站上面的状态就成了一面通过,二面中。

面小易说:从整体的面试感觉来看,这位同学的一面还是比较流畅的,也能够说明他在这些方面还是做了大量的准备的,但是还是存在一些像协程这样问题的盲区,这是大家在面试之前需要弥补的。此外,一定要听清楚面试官问的问题是什么再回答,问线程切换就不要回答进程切换了。

二面

但是接下来二面就直接跪了。当天晚上七点多给我打的电话,整个过程半个小时,一点准备都没有,感觉语速有点快,上气不接下气的感觉,还是紧张。

开始是个人介绍,这块之前没怎么太准备,手忙脚乱的打开网站上的个人信息就开始说,连个人简历都没打开,云里雾里的就扯完了。面试官一开始是问我Android是怎么自学的,我说一般是购买书籍,然后遇到问题了除了看书,就是上Android开发者网站上面找官方文档的说明,或者上CSDN上搜索,之后问遇到问题怎么解决的,回答也是差不多,感觉说了一通像是没有说一样。接着是问对于Android哪块最熟悉,我说现在接触不是很深入,还是简单的用控件,学下自定义控件啥的...感觉就是从这里开始跪了。

说完Android开始说Java,又问我对Java的哪块最熟,我想起集合就张嘴说了集合,面试官于是说那我就问你你最熟悉的吧。问题1.ArrayList和LinkedList有什么区别,实现方式上有什么区别优劣(现百度,结结巴巴答上来了)问题2.对HashMap的了解,我说就是在用适配器的时候和ArrayList搭配着用过,对原理还是不太熟悉。问题3.Activity的生命周期(正好旁边就是一本书,看着说下来了)。最后一个问题就是Android的四大组件。

结束的的时候我的问题还是和一面的一样,他说根据这个面试来看,基础知识还是有点欠缺。果然十分钟后打开网站,状态变成了“待回绝”...

面小易说:能够从这位同学的二面经历看出,他的知识基础还很欠缺,甚至可以说目前的能力并不能胜任所面试的岗位的需求。因为面试官问到的问题要么就是接触不深入,要么就是了解并不多,要么就是通过搜索或者查资料回答,这样肯定的是不合格的。对于实习生而言,基础还是最重要的,“基础不牢,地动山摇”。

总结

总结,还是基础知识没有打牢,阿里的面试还是考基础居多,毕竟只是实习生面试,项目经历相差不大的情况下,肯定就是看基础了。第一次面试给了阿里,像投简历的时候的心态一样重在参与。

面小易说:希望大家能够吸取这位同学的经验和教训,在平时的学习中一定要将基础打扎实,这样才能遇到问题不慌不忙,侃侃而谈。基础真的很重要。

相关文章
|
13天前
|
消息中间件 网络协议 Java
Android 开发中实现数据传递:广播和Handler
Android 开发中实现数据传递:广播和Handler
14 1
|
15天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
16天前
|
Unix Linux Shell
FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库
在Linux环境下交叉编译Android所需的FFmpeg so库,首先下载`android-ndk-r21e`,然后解压。接着,上传FFmpeg及相关库(如x264、freetype、lame)源码,修改相关sh文件,将`SYSTEM=windows-x86_64`改为`SYSTEM=linux-x86_64`并删除回车符。对x264的configure文件进行修改,然后编译x264。同样编译其他第三方库。设置环境变量`PKG_CONFIG_PATH`,最后在FFmpeg源码目录执行配置、编译和安装命令,生成的so文件复制到App工程指定目录。
FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库
|
3天前
|
存储 安全 Android开发
安卓应用开发:构建一个高效的用户登录系统
【5月更文挑战第3天】在移动应用开发中,用户登录系统的设计与实现是至关重要的一环。对于安卓平台而言,一个高效、安全且用户体验友好的登录系统能够显著提升应用的用户留存率和市场竞争力。本文将探讨在安卓平台上实现用户登录系统的最佳实践,包括对最新身份验证技术的应用、安全性考量以及性能优化策略。
|
6天前
|
前端开发 Android开发 iOS开发
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
【4月更文挑战第30天】Flutter 框架实现跨平台移动应用,通过一致的 UI 渲染(Skia 引擎)、热重载功能和响应式框架提高开发效率和用户体验。然而,Android 和 iOS 的系统差异、渲染机制及编译过程影响性能。性能对比显示,iOS 可能因硬件优化提供更流畅体验,而 Android 更具灵活性和广泛硬件支持。开发者可采用代码、资源优化和特定平台优化策略,利用性能分析工具提升应用性能。
【Flutter前端技术开发专栏】Flutter在Android与iOS上的性能对比
|
7天前
|
监控 Java Android开发
安卓应用开发:打造高效用户界面的五大策略
【4月更文挑战第29天】 在安卓应用开发的世界中,构建一个既美观又高效的用户界面(UI)对于吸引和保留用户至关重要。本文将深入探讨五种策略,这些策略可以帮助开发者优化安卓应用的UI性能。我们将从布局优化讲起,逐步过渡到绘制优化、内存管理、异步处理以及最终的用户交互细节调整。通过这些实践技巧,你将能够为用户提供流畅而直观的体验,确保你的应用在竞争激烈的市场中脱颖而出。
|
1天前
|
安全 Linux Android开发
FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
该文介绍了如何在Linux服务器上交叉编译Android的FFmpeg库以支持HTTPS视频播放。首先,从GitHub下载openssl源码,解压后通过编译脚本`build_openssl.sh`生成64位静态库。接着,更新环境变量加载openssl,并编辑FFmpeg配置脚本`config_ffmpeg_openssl.sh`启用openssl支持。然后,编译安装FFmpeg。最后,将编译好的库文件导入App工程的相应目录,修改视频链接为HTTPS,App即可播放HTTPS在线视频。
FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
|
6天前
|
存储 Java Android开发
安卓应用开发中的内存优化策略
【4月更文挑战第30天】在移动开发领域,尤其是安卓平台上,内存管理是影响应用性能和用户体验的关键因素。由于安卓设备的硬件资源有限,不合理的内存使用会导致应用响应缓慢、消耗过多电量甚至崩溃。本文将探讨针对安卓平台的内存优化技巧,旨在帮助开发者提高应用的性能和稳定性,从而提升用户满意度。我们将详细讨论内存泄漏的预防、合理的内存分配策略以及高效的内存回收方法。
|
6天前
|
机器学习/深度学习 安全 数据处理
构建未来:基于Android的智能家居控制系统开发
【4月更文挑战第29天】 随着物联网技术的蓬勃发展,智能家居已成为现代技术革新的重要领域。本文将深入探讨基于Android平台的智能家居控制系统的设计和实现,旨在提供一种用户友好、高度集成且功能丰富的解决方案。通过利用Android设备的广泛普及和其强大的处理能力,结合最新的无线通讯技术和人工智能算法,我们旨在打造一个可靠、易用且具有高度可定制性的智能家居控制环境。文中不仅详细阐述了系统架构、关键技术选型以及界面设计,还对可能遇到的安全挑战进行了分析,并提出了相应的解决策略。
|
6天前
|
监控 Java Android开发
安卓应用开发中的内存优化策略
【4月更文挑战第29天】在面对安卓设备多样化的硬件配置时,合理管理应用内存成为提升用户体验的关键。本文深入探讨了安卓应用开发中常见的内存泄漏问题,并提出了一系列针对性的优化策略。通过分析内存分配机制、垃圾回收原理及内存监控工具的使用,揭示了高效内存管理的实践方法。文章旨在为开发者提供一套系统的内存优化解决方案,以实现更流畅、稳定的应用性能。