Android面试经历

最近我参加了一家互联网公司的Android开发岗位面试。这是我投了100份简历中唯一收到邀面的,这次面试主要包括笔试和面试两个环节,考察了我的专业技能、开发经验和综合素质。

笔试环节中,我需要根据面试官给出的一些需求和条件,完成一个实现简单功能的Android小应用。我写了一个登录应用,包括输入用户名和密码、校验登录信息、跳转到主界面等功能。在编写代码的过程中,我不断通过注释清晰地讲解了代码实现原理和方法,也因此在笔试环节中表现较为出色。

面试主要分为两部分,一部分是问答环节,另一部分是实操环节。

在问答环节中:

面试官主要考察了我的专业技术知识和开发经验。他询问我对于设计模式、Android各个组件的生命周期、内存泄漏、性能优化等方面的掌握情况。我结合自己的开发经验和阅读学习得来的知识,一一回答并且举例子,与面试官进行了广泛的交流。

能记得起来的面试题目如下:

  1. 谈谈你对Android系统架构的理解?
  2. 说说你在Android开发中用到的设计模式?
  3. 虚拟机是什么,与真实机有哪些区别?
  4. 掌握哪些数据库操作的技巧?可以谈谈你的经验。
  5. 怎么保证Android程序的安全性?
  6. Android的单元测试框架用过吗?回答一下可以带来哪些好处?
  7. 解释一下什么是AIDL(Android Interface Definition Language)?它有什么作用?
  8. 谈谈你对Android中的异步任务机制(AsyncTask)的理解?
  9. 什么是BroadcastReceiver(广播接收器)?在什么情况下使用它?
  10. 说说你对Android中的Service(服务)的理解?
  11. 谈谈你对Android中的Fragment(碎片)的理解?
  12. 谈谈你对Android中的布局文件的理解?
  13. 谈谈你对Android中网络编程的理解?
  14. 解释一下Android中的MVP模式,以及它的优点有哪些?
  15. 谈谈你对RxJava(响应式编程框架)的理解。

在实操环节中:

面试官提供给我一个需求,让我基于这个需求完成代码的编写和调试。这个需求是关于一个带动画的ViewPager的实现。我用我之前的代码作为模板,根据面试官的需求进行了修改和调试。在这个过程中,我不断地与面试官进行交流、汇报当前的进度和存在的问题,同时在合理的时间范围内完成了任务。

如何实现带动画的ViewPager。 首先我们需要在xml布局中新增一个自定义的ViewPager:

xml
<com.example.animationviewpager.MyViewPagerandroid:id="@+id/myViewPager"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"/>

然后在Java代码中,我们需要继承ViewPager,实现带动画的效果:

java
public class MyViewPager extends ViewPager {private static final String TAG = "MyViewPager";private int mLastPosition = -1;private int mCurrPosition = -1;private int mPrevPosition = -1;private float mMarginX = 0f;public MyViewPager(Context context) {super(context);}public MyViewPager(Context context, AttributeSet attrs) {super(context, attrs);}@Overridepublic void setPageTransformer(boolean reverseDrawingOrder, ViewPager.PageTransformer transformer) {super.setPageTransformer(reverseDrawingOrder, transformer);}@Overrideprotected void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {super.onPageScrolled(position, positionOffset, positionOffsetPixels);if (mCurrPosition == position || mCurrPosition == -1) {mCurrPosition = position;mPrevPosition = mCurrPosition - 1;mLastPosition = getChildCount() - 1;if (mPrevPosition >= 0 && mPrevPosition <= mLastPosition) {View view = getChildAt(mPrevPosition);mMarginX = view.getWidth() / 2 * positionOffset;view.setTranslationX(-mMarginX);}if (mCurrPosition >= 0 && mCurrPosition <= mLastPosition) {View view = getChildAt(mCurrPosition);mMarginX = view.getWidth() / 2 * positionOffset;view.setTranslationX(mMarginX);}} else if (mCurrPosition < position) {if (mPrevPosition >= 0 && mPrevPosition <= mLastPosition) {View view = getChildAt(mPrevPosition);view.setTranslationX(-view.getWidth() / 2);mPrevPosition = mCurrPosition;}if (mCurrPosition >= 0 && mCurrPosition <= mLastPosition) {View view = getChildAt(mCurrPosition);mMarginX = view.getWidth() / 2 * positionOffset;view.setTranslationX(mMarginX);mCurrPosition = position;}} else if (mCurrPosition > position) {if (mPrevPosition >= 0 && mPrevPosition <= mLastPosition) {View view = getChildAt(mPrevPosition);view.setTranslationX(view.getWidth() / 2);mPrevPosition = mCurrPosition;}if (mCurrPosition >= 0 && mCurrPosition <= mLastPosition) {View view = getChildAt(mCurrPosition);mMarginX = view.getWidth() / 2 * positionOffset;view.setTranslationX(-mMarginX);mCurrPosition = position;}}}
}

上述代码中,我们重写了onPageScrolled()方法,实现了ViewPager的动画效果。每次滑动时,我们都会计算出上一个页面和当前页面的位置,然后通过设置上一个页面和当前页面的平移量,实现一个带动画的滑动效果。 需要注意的是,如果你想实现自己的ViewPager,并且为其设置自定义的动画效果,你需要在调用setAdapter()方法之前,先调用ViewPager的setPageTransformer()方法,将自定义的动画效果设置到ViewPager中。

文末

整个面试过程中,我感到非常充实和愉快。面试官对于我在开发中遇到的问题、困难和解决方案给予了高度的肯定,对于我也提出了指导意见。这次面试不仅考察了我的专业技能和开发能力,更是考查了我综合素质的表现,这让我收获颇丰。

回想整个面试过程,我的心态是平静和乐观的,心中充满了自信和对于未来的期望。面试官对我感觉印象不错,最后等了好几天才拿到了这家公司的offer。

投了100份简历,唯一邀请我面试的这一家Android开发公司;是如何对我洗刷的?相关推荐

  1. 13年资深HR告诉你,为什么你投了100份+简历都毫无反应

    目录 1.有投无回的HR究竟能不能收到简历? 那投简历上,有没有什么特别的渠道呢? 2.大厂HR是怎么筛选简历的? 3.哪种类型的简历更容易获得面试机会? 什么叫投对岗位? 4.竞争对手决定你拿off ...

  2. 秋招投100份简历是种什么体验

    秋招,大概是我人生最漫长痛苦的一段时光 我的本科院校,是北方一个不知名的二本理科院校,而我所在的,是整个学校里最弱势.最没存在感的文科院系-法院,四个年级,加起来不过寥寥200人 更讽刺的是--我,还 ...

  3. 37岁程序员失业投500份简历就3次面试猎头:超35岁不要

    37岁程序员失业120天,投了500份简历就3次面试,猎头:超过35岁都不要 在职场中,都说互联网吃青春饭,而35岁就是一个门槛,一旦到了这个年龄找工作都非常难,甚至被公司裁员的风险都很大,其实一个现 ...

  4. 【实习之路】投了109份简历,幸运的大二菜鸡终于拿到欢聚时代的offer了!!

    文章目录 前言 正文 面试过程 笔试情况 一轮面试: 二轮面试: 三轮面试: 发放offer 总结 前言 我是一名普通3本(本地叫2本,外地叫3本)的大二(准大三)学生,学校是一个民办独立院校,软件工 ...

  5. CTO职位刚发布,一天收到100+份简历

    IT行业卷 可是没有想到这么卷,我们公司最近招聘CTO,一天收到100+份简历,这里面有太多优秀的人,简直挑花了眼. 这里面有英国毕业的,有北京大学的,还有各种985和211毕业的大学生,简历也是非常 ...

  6. 为什么你投十份简历,只有一两家公司约你?又或者为什么你每投一份简历都能获得面试机会?

    最根本的原因,就是一方在汲汲渴求,而恰恰另一方呈现出的关键点让其怦然心动.求者心中有所想,而应者恰恰展现了求者所想的那一面.这就是个中奥妙. 程序员在找工作时,在一开始有三件事情会对能否获得面试机会至 ...

  7. 【粉丝福利、免费领取】:1000套PPT模板、100份简历模板、硬核学习资料+PDF资料(java、python、大数据、机器学习)

    目录 1.100套小编购买的简历模板(部分截图) 2.1000套精品PPT模板(部分截图) 3.大数据-学习资料(1.3G 硬核PDF,官方指南) 4.python学习全集 5.Java基础.高级和面 ...

  8. 免费求职简历模板100份,持续更新中

    最近是求职季,很多人都需要制作求职简历,但是苦于简历过于简单,没有很好的模板,去网上搜搜都是要按单收费的,钱包不够怎么办,自己也上网逛了一圈,总算收集了100份简历模板,也在不断的收集之中,大家可以都 ...

  9. 给2021金三银四的程序员们-投简历100份,1份面试通知都没收到,哪里出了问题

    与该岗位契合度 写好简历要重点把握住以下几个方面: 人职匹配.HR招聘.看简历的一个基本原则就是"人职"匹配,因此整个简历呈现出的你的知识.技能.能力等综合素质,要和个人应聘的职位 ...

最新文章

  1. 计算机网络与云计算研究背景,基于云计算背景下的计算机网络安全研究
  2. 大家都在聊的人工智能,究竟是什么?
  3. Hill加密算法(matlab 实现)
  4. java多线程 生产者消费者_java多线程之生产者消费者经典问题 - 很不错的范例
  5. ci/cd heroku_在Heroku上部署Dash或Flask Web应用程序。 简易CI / CD。
  6. 【机器视觉学习笔记】二值图像连通区域提取算法(C++)
  7. 【POJ - 2785】4 Values whose Sum is 0 (二分,折半枚举)
  8. c++语言的设计与演化 pdf_天津大学在金属材料织构设计与调控领域取得进展
  9. Sql Server参数化查询之where in和like实现之xml和DataTable传参
  10. 存货控制中的ABC分类释义
  11. 拓扑排序排课系统_木犀互联网技术周刊(第四十五期): 分布式系统简介
  12. 序列化和反序列化的概念
  13. 【随记】还原SQL Server数据库步骤
  14. Redis集群--Cluster--节点通信的过程(原理)
  15. 遥远的路:【码农】的成长困惑
  16. Java如何从字符串中提取数字
  17. SpringMVC复习
  18. Web Directions South 2012的四个大创意
  19. html网页效果跳动的心
  20. 通俗理解TIM定时器并简单使用

热门文章

  1. PostgreSQL 查表、所属schema、字段、字段类型、注释等信息
  2. STM32理论 —— ADC、存储、定时器、时钟、中断
  3. 操作系统概念(一)——导论
  4. 【毕业设计】 微信小程序购物商城系统 【含代码】
  5. Zoom Cloud Mettings - Zoom 云视频会议
  6. 微信小程序 地图map组件 SDK 并 实现导航
  7. MySQL安装报错:No compatible servers were found.You‘ll need to cancel this wizard and install one
  8. PySide2----案例练习
  9. 1999-2018年地级市一般公共预算收入、支出(教育事业费、科技支出)
  10. C++编写MC(含源码)