8年经验的面试官分享Android工程师的面试秘诀

news2024/11/24 12:11:20

本人目前在一家知名企业担任Android高级工程师,工作八年来面试不过不少Android工程师求职者,前后累积有两三百人。在本文内容中,小编将结合本人的面试经验,给各位正在找Android开发工作的小伙伴提出一些面试前的准备建议。

一,面试之前准备和投递简历的技巧

1.简历需要包含的要素,一个都别落下

简历是求职者的一张名片,为了能更吸引HR的注意,一定要直接的在简历中表明自己的教育背景,工作经验和项目经验,这样才能让他们将这份简历纳入考虑范围。

![在这里插入图片描述](https://img-blog.csdnimg.cn/85a05c230f064b24bbdc99a6a6a531c4.png

2.工作描述该如何写

一般情况下是按倒叙的格式写的比如:

  1. 2019年11月到2022年10月,在xx公司,职务是Android高级开发。离职理由是想进一步发展。
  2. 2016年2月到2019年11月,在xx公司,职务是Android初级开发。离职理由是想进一步发展。

按此格式写之前的工作情况

这部分的内容应当尽量靠前,在罗列工作情况时,请大家注意如下的四个要点。

1.工作情况可以和项目经验分开写,一般会在后继的项目经验里写具体用到的技术框架以及所做过项目的细节,在这里的工作情况描述里,可以不用过于复杂,让招聘方看到你之前的公司情况即可。

2.尽量别出现长时间的空窗期,比如上份工作是6月份介绍,到第二年3月份才开始下一份工作。如果出现三个月以上还没有工作的情况,可以将上份工作的结束时间延迟致最近的一个时间,或者在简历中说明情况,比如这段时间因为家里的要求备考公务员啥的,总之要有个说得过去的理由。

3.在简历上千万别让人看出你每份工作都做的不长,因为跳槽太频繁会让面试官觉得你也在我公司工作也不会做太久的想法,但不能随便作假。比如我见过的应聘者里面,有部分人会为了不让面试官看出他换工作太频繁,就将简历上的两家公司的工作时长合并成一家,虽然说很多公司都不会去查,但如果遇到会做背景调查的公司,就会非常尴尬,所以这种做法有一定的风险性。

4.需要写上合适的离职理由,如果你工作换的太频繁,肯定会引起面试官的质疑,这时候一个合适的理由就非常重要。当面试官问起为什么会从上家公司离职时,主要是为了了解求职者的工作稳定性,因为公司你在培养员工是也是需要成本和精力的,培养不稳定的员工就等于浪费成本和精力,公司在招聘员工时会比较注重这一点。所以千万别说工资太低,工作量太大,老实加班等吐槽公司的理由,可以这么说:“原来的平台已经基本稳定,个人发挥的空间越来越少,不想再留下去混日子,希望找个更大的平台,参与更多有挑战的事情,收获更大的成长。”

3.尽量把学习培训项目往商业项目上靠

商业项目是指能挣钱的项目,和它对应的就是些不以挣钱为目的的学习项目。正因为客户付了钱,所以商业项目的要求要远远高于学习或毕业设计项目,这也是为什么招聘公司会看重商业项目而会主动过滤学习项目的原因。

4.描述项目的技巧

我们根据职位的工作内容,从一下几个方面描述项目经验。

第一,简单描述一下项目的背景,比如:项目时间范围,客户是谁,项目规模有多大。比如从从x年x月到现在(这个时间范围至少是最近半年),我参与了宅豆App的开发。这个项目组的构成是,一位项目经理加我们5个技术人员,项目时长大概6个月左右。

第二,大致描述一下项目的需求和包含的模块,然后简单说一下你负责的模块,同时说一下在这个项目中运用到的开发工具和主要技术点,如下是范例。

该项目是一款专注于发现和分享提高生活品质的科技玩物的APP。包括以下几个板块:免费试用、发现与分享、晒自己的好物等等。项目采用MVC架构,我主要负责了社区模块的编码开发,用已经封装好的RecyclerView来实现界面的展现,用Picasso来实现图片的加载,通过PhotoPicker来实现照相上传的功能;通过PagerSlidingTab,来实现tab栏和ViewPager的联动效果,通过SearchView来实现搜索的功能,将搜索到的内容用RecyclerView展示。

5.在简历中添加一些亮点

如果能在个人技能这个模块中,填上与应聘职位需求相匹配的技能,这种简历属于“达标”,可以纳入考虑范围。比如:

  • 掌握java语言,熟悉Android开发,具备良好的Java基础。
  • 掌握Android体系架构(应用层、应用框架层、类库和Linux内核驱动层)和Android API。
  • 掌握数据的存储方式(SharedPreferences,File存储,SQLite数据库存储,ContentProvider,网络存储数据)。
  • 熟练应用TCP、UDP协议,Socket,HttpURLConnection等网络编程,熟悉Volley,OKHttp网络请求框架。

6.什么样的简历能通过筛选

从面试官的角度来看,除了学历这个硬性要求外,如果能满足以下四点要求的话,一般会有面试机会的。

  • 以往工作经历与目前应聘岗位相似度很高;
  • 个人掌握的技能比较多,与当前职位要求很匹配;
  • 没有过长职业空白期或不稳定等情况;
  • 定请记住,公司只能通过简历认识到你,简历上没写清楚等同于你不行。

这就是简历上基本信息的修改方向,而且在投递简历时,可以根据目前岗位要求,微调简历。

二,面试时如何赢得面试官的好感

1.别紧张,因为面试官什么都不知道

面试官也是人,在拿到你的简历后,一时间没办法核实你简历的真实性(一般是在公司录用后,可能会做背景调查)。更何况,你做的项目是以月为单位算的,而面试官最多用30分钟来从你的简历上了解你的项目经验,所以你对项目的熟悉程度要远远超过面试官,所以你一点也不用紧张。如果你的工作经验比面试官还丰富的话,甚至还可以控制整个面试流程(笔者在面试方面成精后也经常干这种事情,大家一定也能行)。

在这里插入图片描述

既然面试官无法了解你的底细,那么他们怎么来验证你的项目经验和技术?下面总结了一些常用的提问方式。

在这里插入图片描述

2.面试时的错误表现

我们在面试的时候,如果出现以下表现,那很可能过不了面试,请大家注意。

  • 面试时介绍的项目时间等情况简历上写的不一致,这就有简历造假的嫌疑;
  • 介绍项目时只介绍业务,忽略技术。因为面试官只关心技术,不关心业务;
  • 对于提到的技术,连最基本的问题也回答不上,这就说明候选人这项技术没掌握;
  • 说得太流利或太磕磕巴巴,这就说明在背词或者是表达有问题。

3.面试中介绍项目的范例

第一步,介绍项目的基本情况

可以这样说,这个项目是一款xx类型的App,有哪些模块,其中我负责的哪个模块,项目周期多长时间。这里可以谈一下业务,别深入,因为面试官不熟悉,也不想熟悉候选人的业务,这块时间控制在1分钟之内。

第二步,介绍项目里用到的关键技术

比如说,在这个项目里,我用到了Android framework框架,用Picasso来实现图片的加载,通过PhotoPicker来实现照相上传的功能;通过PagerSlidingTab,来实现tab栏和ViewPager的联动效果,通过SearchView来实现搜索的功能,将搜索到的内容用RecyclerView展示。这块可以根据自己的情况来介绍,时间也别太长,一分钟就够了。

第三步,结合业务讲用到的技术,但是别展开:

比如有的职位需要有性能优化的经验,那么可以说,测试人员反馈这个项目在启动时会出现卡顿,闪退等现象,这个时候我会使用PerfDog工具来分析卡顿的原因并对其进行优化。

4.介绍项目时注意归纳要点

从上述介绍项目的范例中,可以归纳出相关要点如下。

  1. 面试前,需要阅读职位介绍,挖掘用过的技能要点,然后尽可能地在介绍项目里提到这些技能关键字;
  2. 在介绍项目里,结合业务,提到职位介绍里的技术,因为一旦技术结业业务,就说明你有过相关技术的实践经验,而不是仅仅只会理论;
  3. 别过多介绍业务,多抛出职位介绍里的关键字。还是这句话,面试官不关心业务,你提到业务只是以此证明你在实践中用过相关技术而已;
  4. 此时还在项目介绍阶段,别过多展开技能,你抛出技能关键字后,面试官自然会问的。而一旦你过多展开技术,那么面试官就有可能感觉到你思路不清晰。

三,哪些技能是面试者的加分项

1.框架是重点,但别让人感觉你只会山寨别人的代码

一般工作在3年内的候选人,大多仅仅是能“山寨”别人的代码,也就是说能在现有框架的基础上,照着别人写的流程,扩展出新的功能模块。比如要写个股票挂单的功能模块,是会模仿现有的下单流程,然后从前端到后端再到数据库,依样画葫芦写一遍,最多把功能相关的代码点改掉。

2.别单纯看单机版框架,适当了解网络通信机制

我们的项目在完成之后最终都是要通过互联网让用户使用的,所以说网络通信是Android工程师的一个必备技能。下面我列出些网络访问的知识体系。

  • 网络七层模型 TCP、UDP;
  • http三次握手底层实现
  • https证书下发机制
  • DNS解析与Socket通信原则
  • Restful
  • URL SSL握手与加密
  • DNS解析与Socket通信原则
  • OkHttp源码分析与架构详解
  • 请求队列与线程池
  • Socket连接池复用机制详解

3.Android核心技术方面,围绕性能优化和Framework准备面试题

Android性能优化这块的面试题,网络上有很多,不过在此之外,大家还应当着重关注Android framework方面,下面列出些面试上常问的问题:

  • Binder有什么优势
  • Binder是如何做到一次拷贝的
  • MMAP的内存映射原理了解吗
  • Binder机制是如何跨进程的
  • 说说四大组件的通信机制
  • 为什么Intent不能传递大数据
  • 为什么推荐使用Handler 实现线程间通信

通过上述的问题,我其实不仅仅是为了观察应聘者是否掌握,还要看他是否会运用。

四,预估面试题,做好答题准备

1.哪些问题面试时大概会被问到

在面试中,不管如何引导面试官,以下这些问题还是大有可能会被问到的,所以在面试前一定要做好准备。

1。个人技能这块提到的技能要点,比如上面所提到的熟练应用TCP、UDP协议,Socket,HttpURLConnection等网络编程,熟悉Volley,OKHttp网络请求框架等这些知识,面试可能会问你这些问题:

  • http的get和post的区别是什么
  • socket和http的区别是什么
  • TCP与UDP的区别 。。。等

2.你在介绍项目时抛出的技术关键词,比如你在面试过程中介绍项目时提到了负责App界面的布局搭建和优化以及逻辑代码功能的实现,那么在介绍完项目后。面试官可能就会问,“如果这个界面出现了卡顿,你会怎么去优化”,简历中说明用到的技术,都有可能会被问到。

2.举例说明该如果准备面试问题

下面给出准备问题的技巧。

  • 斟酌面试时抛出的技能,逐一准备说辞;
  • 针对技术,网上搜索问题,比如搜Android面试题,结合网上的参考答案准备说辞;
  • 准备技术的实施要点,比如做了哪些配置文件,你在项目里踩过哪些坑?
  • 最好结合底层代码说明。

这里给大家准备了一份Android面试题,用pdf的格式保存,有需要可点击下方私信获取。

由于篇幅太长,下面给大家分享两个部分的面试题:

Android 基础组件部分

  • 说下Activity的生命周期?屏幕旋转时生命周期?异常条件会调用什么方法?
  • 后台的Activity被系统回收怎么办?
  • 说一下onSaveInstanceState()和onRestoreInstanceState()方法特点?
  • 如何避免配置改变时Activity重建?优先级低的Activity在内存不足被回收后怎样做可以恢复到销毁前状态?
  • app切换到后台,当前activity会走onDestory方法吗?一般在onstop方法里做什么?
  • 什么情况会导致app会被杀死,这时候会走onDestory吗?
  • Activity的启动过程是有几种方式?
  • 从桌面launcher上点击应用图标会干啥,调用startActivty()又会做什么?

Android之IPC机制部分

  • 什么是Binder?
  • 为什么要使用Binder?
  • Binder中是如何进行线程管理的?
  • Android中进程和线程的关系?
  • 什么是IPC?
  • 为何需要进行IPC?
  • 多进程通信可能会出现什么问题?
  • Binder的工作流程是怎样的?
  • Binder主要能提供哪些功能?
  • Binder通信机制原理是怎样的?
  • Android中为何新增Binder来作为主要的IPC方式?
  • Binder运行机制是怎样的?Binder机制有什么优势?
  • Android中跨进程通讯的几种方式?
  • 实际开发中,有哪些场景使用Binder进行数据传输?

在回答问题的时候,大家可以结合底层代码说明,这样面试官一定会对大家刮目相看。

总结, 面试准备后,结果可能就大不同

从面试官的角度来看,哪些人能面试成功?

  • 最近半年的项目经历和岗位匹配度跟高;
  • 通过面试,岗位要求的技能大多能掌握: 面试者在Android核心,性能优化和框架方面的技能达标;
  • 性格方面不是刺头,团队合作没问题,就没有其他问题。

如果大家在面试前没准备好,或者准备不到位,那只能是以下结果:

  • 简历未必能过筛选,甚至没有面试机会;
  • 无法证明项目里用到的技术和岗位要求高度契合;
  • 介绍项目经验时没问题,把提问的主动权交给面试官;
  • 不知道将会问哪些问题,所有问题都现场想;
  • 在面试现场,没法让面试官全面了解你的技术亮点。

但如果按照上述方法准备,大家很大程度上能得到如下的收获。

  • 能通过微调简历,得到更多的面试机会;
  • 能通过挖掘项目经验,证明自己的技能和JD契合;
  • 能知道哪些属于值钱技能,并能结合业务准值钱技能和调优技能的说辞,而且能不露痕迹地展示;
  • 知道面试大致会问哪些问题,并由此能事先准备;
  • 能事先尽可能多地挖掘亮点,并在面试时展示。

这就是本文全部内容,感谢大家看完本文。最后,为了帮助大家更快的找到工作,小编这里准备了一份Android面试题(pdf格式的),内容包含答案,分享给大家,有需要的朋友可以私信获取。

内容展示:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/422113.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3通用后台管理项目

一、创建项目 1、使用vite创建名为my-vue的项目:npm init vite-app my-vue 2、进入到my-vue文件夹下:cd my-vue 3、安装依赖包:npm install 4、运行该项目:npm run dev 二、引入element-plus 1、element-plus地址:http…

Camunda整体架构

REST API REST API 允许您从远程应用程序或 JavaScript 应用程序使用流程引擎。(注意:REST API 的文档被分解为自己的文档。)REST API Reference | docs.camunda.org Camunda Tasklist用于人工工作流管理和用户任务的 Web 应用程序&#xff0…

UniverSeg:通用医学图像分割模型来了!

自从今年以来ChatGPT爆火和GPT-4的发布,一时间在大模型的潮流下,通用人工智能(AGI)也呼之欲出。随着本月初SAM和SegGPT等通用的CV大模型的提出,大模型和通用模型这把火也逐渐烧到的CV领域,特别是图像分割领…

Linux应用编程(文件IO进阶)

一、Linux 系统如何管理文件 1.1、静态文件与 inode 文件存放在磁盘文件系统中,并且以一种固定的形式进行存放,我们把他们称为静态文件。 每一个文件都必须对应一个 inode,inode 实质上是一个结构体,这个结构体中有很多的元素&a…

【C语言】初阶指针(指针运算、二级指针及指针数组)

简单不先于复杂,而是在复杂之后。 目录 1. 指针运算 4.1 指针-整数 1.2 指针 - 指针 1.3 指针的关系运算 2. 指针和数组 3. 二级指针 4. 指针数组 1. 指针运算 指针-整数指针-指针指针的关系运算 4.1 指针-整数 上面这个程序的作用是将数组中每个元…

【攻城狮计划】Renesas RA2E1 开发板

🚩WRITE IN FRONT🚩 🔎介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四"🔎🏅荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2022博客之星TOP10…

Scalable Recognition with a Vocabulary Tree(词汇树)

视觉单词 参考 视觉词袋(BoVW,Bag of Visual Words)模型,是“词袋”(BoW,Bag of Words)模型从自然语言处理与分析领域向图像处理与分析领域的一次自然推广。对于任意一幅图像,BoVW模…

jwt生成和解密-jose4j

jwt生成和解密-jose4j jwt的概念和生成意义在这里就不描述了&#xff0c;百度能搜到很多&#xff0c;直接上代码 官网地址 https://bitbucket.org/b_c/jose4j/wiki/Home maven <dependency><groupId>org.bitbucket.b_c</groupId><artifactId>jose4j…

【微信小程序】-- 配置uni-app的开发环境(四十八)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &…

Echarts图表显示不完全(多种图表解决方案)

前言 在使用Echarts画图的时候&#xff0c;有时候图表在固定大小的盒子模型&#xff08;dom容器&#xff09;中会显示不完全&#xff0c;因此我们需要对图表进行相关的调整使得图表内容显示完全。结合最近遇到的情况&#xff0c;提出一些解决方向 &#xff08;比较片面&#x…

Linux操作系统ARM体系结构处理器机制原理与实现

ARM 的概念ARM(Advanced RISC Machine)&#xff0c;既可以认为是一个公司的名字&#xff0c;也可以认为是对一类微处理器的通称&#xff0c;还可以认为是一种技术的名字。ARM 公司并不生产芯片也不销售芯片&#xff0c;它只出售芯片技术授权。其合作公司针对不同需求搭配各类硬…

【2023 · CANN训练营第一季】昇腾AI入门课(Pytorch)——第二章学习笔记

第二章 PyTorch模型迁移&调优 目标 了解 Pytorch 是如何适配到昇腾平台上的了解 Davinci 硬件架构以及什么样的模型在昇腾上更亲和了解软件术语和 Ascend - Pytorch 的安装步骤了解如何将原生 Pytorch 的模型代码是如何适配到 Ascend - Pytorch 前置知识 对原生 Pytorc…

足够惊艳,使用Alpaca-Lora基于LLaMA(7B)二十分钟完成微调,效果比肩斯坦福羊驼

之前尝试了从0到1复现斯坦福羊驼&#xff08;Stanford Alpaca 7B&#xff09;&#xff0c;Stanford Alpaca 是在 LLaMA 整个模型上微调&#xff0c;即对预训练模型中的所有参数都进行微调&#xff08;full fine-tuning&#xff09;。但该方法对于硬件成本要求仍然偏高且训练低效…

Java基础——IO流+字节流使用

&#xff08;1&#xff09;IO流的概述&#xff1a; IO流也称为输入&#xff0c;输出流&#xff0c;就是用来读写数据的。I表示input&#xff0c;是数据从硬盘文件读入到内存的过程&#xff0c;称之输入&#xff0c;负责读。O表示output&#xff0c;是内存程序的数据从内存到写…

CSS:transform顺序问题(translate()+rotate())

问题&#xff1a;下面两行代码在执行效果上有区别吗&#xff1f; transform: translate(100px,100px) rotate(45deg);transform: rotate(45deg) translate(100px,100px);translate(X,Y)&#xff0c;可以使元素在x轴和y轴上平移。&#xff08;在translate中&#xff0c;x轴右为…

设计模式之观察者模式(C++)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 一、观察者模式是什么&#xff1f; 观察者模式是一种行为型的软件设计模式&#xff0c;定义对象间的一种一对多的依赖关系&#x…

51 openEuler搭建PostgreSQL数据库服务器-安装、运行和卸载

文章目录51 openEuler搭建PostgreSQL数据库服务器-安装、运行和卸载51.1 安装51.2 运行51.2.1 初始化数据库51.2.2 启动数据库51.2.3 登录数据库51.2.4 配置数据库账号密码51.2.5 退出数据库51.2.6 停止数据库51.3 卸载51 openEuler搭建PostgreSQL数据库服务器-安装、运行和卸载…

【Webpack5】核心原理

介绍 本章节我们主要学习&#xff1a; loader 原理自定义常用 loaderplugin 原理自定义常用 plugin Loader 原理 loader 概念 帮助 webpack 将不同类型的文件转换为 webpack 可识别的模块。 loader 执行顺序 分类 pre&#xff1a; 前置 loadernormal&#xff1a; 普通 …

【golang项目-GeeCache】动手写分布式缓存 day1 - 实现LRU算法

介绍 LRU 内存淘汰算法 LRU(Least Recently Used) 最近最少使用 算法 &#xff0c;系统认为如果这个数据最近使用过那么它被再次使用的概率会高&#xff0c;所以系统会先淘汰最久没被使用的数据 基本逻辑 -----------------------------------------------------------------…

手把手教你学习IEC104协议和编程实现 十一-定值的概念讲解、定值的操作过程以及部分代码的实现

从本章开始,我们开始研究定值部分; 定值是什么? 了解过终端的可能都知道,定值就是保护定值,就是设定了一组参数,当终端的采样值达到这个参数的时候,终端就会做出一系列的反应。这样的目的,是为了保护电网,让电网正常运行,具体为什么这么做,不做详细的解释,如果有…