Android面试通过一个控件展示自己水平

说好的博客,终于要来了。

这篇文章写一下面试时我自己一般是如何展示自己技术水平的。

我是一名做Android的攻城狮,自己的面试经验还算不错,作为求职者自己的面试成功率比较高,而技术关我从来还没遇到不通过的。我面试的时候喜欢先自己展现下自己的技术,然后再是面试官提问;这样让面试官能全面充分的了解我的技术层次,接下来谈薪水待遇自己的话语权就会多一些。

首先声明一点:我不喜欢在面试的时候多谈业务逻辑、多谈项目经验、多去展示自己对具体Api的记忆之类的行为。因为你所谈的项目和业务逻辑,都是需要和别人配合才确定下来的,而具体的业务、实施场景又是受到各种需求方、提供方的限定、干扰,所以我认为谈这些就是耍赖皮。就好比你给我说:我写的程序,效率都特别高!!可是,空口无凭,我怎么相信你?所以我都会和面试官说简单的介绍下项目,希望更多的去探讨Android标准的机制。

进入正题:

我一般会从一个控件引入,然后扩展到自己的知识结构;这个控件可以是ListView或者是自定义的瀑布流等等。

这里就以ListView为例:

谈到ListView首先可以谈谈它的基础使用,比如复用ConvertView,使用ViewHolder,以及最简洁的ViewHolder写法,以及不同方式之间的一个效率比等;还有以ListView为代表的Android里的MVC思想。

然后谈对ListView的优化:小的方面可以是分页、分批(实质一样)加载数据。

大的方面谈ListView的优化的话可以说分为两类:①线程优化;②内存优化。

线程优化可以谈到Android的异步任务机制和消息处理机制;Looper、Handler、Message内部实现、AsyncTask优缺点,实现定制AsyncTask等。

内存优化的话可以谈到Android、Java内存管理机制,进程分类,提升进程优先级等;以及对Bitmap的处理:加载、缩放、缓存,常用或自定义图片缓存算法,如何避免OOM,发生OOM时处理,全局低内存状态、异常处理等;还可以谈到UI布局的优化;网络访问的优化;避免内存泄露;以及加上各种别的细节:例如对各种流、游标的关闭、传感器的注销等的处理就可以上升到整体的Android性能优化。

还可以从ListView每一个Item的布局、或者是自定义一个增强型的ListView这个角度谈Android中View的测量、布局、绘制、重绘等机制。

谈到View的绘制流程涉及到一个View树的概念,然后可以联想到Android的事件分发树:事件分发、处理、拦截等。以及两个树之间的异同点。

ListView条目的点击又可以联想到IPC进程间通信,你还可以再谈谈Android组件设计的哲学。

谈以上很多机制的时候如果能结合Android源码、从源码角度,或者说参照Android源码实现机制说的话,就更好了:侧面告诉面试官自己喜爱钻研。

以上的这些基本上就是我面试的时候自己会主动谈的技能点,整个一套下来的话大概能谈快一个小时了,面试官就知道你的水平还不错。限于篇幅有限,我写的并不详细,只是写了个名字简单的提及而已,如果详细谈的话这篇文章就太长了。

遇到的面试官不一样,所以技术面试侧重点就不一样,很多的知识都是靠自己平时积累,做到广撒网,多捕鱼;还有就是要打磨自己,让自己的心智成熟,能和不同的面试官聊到一块儿,不能因为技术分歧而闹不愉快。

一个好的心态、踏实的技术态度,都会给自己帮助很多!

明天就是中秋节了,祝大家中秋快乐!!O(∩_∩)O

时间: 2024-10-23 11:09:51

Android面试通过一个控件展示自己水平的相关文章

android 让一个控件按钮居于底部的几种方法

android 让一个控件按钮居于底部的几种方法1.采用linearlayout布局:android:layout_height="0dp" <!-- 这里不能设置fill_parent -->android:layout_weight="1" <!-- 这里设置layout_weight=1是最关键的,否则底部的LinearLayout无法到底部 -->2. 采用relativelayout布局:android:layout_alignPa

Android常用酷炫控件(开源项目)github地址汇总

转载一个很牛逼的控件收集贴... 第一部分 个性化控件(View) 主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar.TextView.ScrollView.TimeView.TipView.FlipView.ColorPickView.GraphView.UI Style 等等. 一.ListView android-pulltorefresh一个强大的拉动

Android开发之基本控件和详解四种布局方式

Android中的控件的使用方式和iOS中控件的使用方式基本相同,都是事件驱动.给控件添加事件也有接口回调和委托代理的方式.今天这篇博客就总结一下Android中常用的基本控件以及布局方式.说到布局方式Android和iOS还是区别挺大的,在iOS中有Frame绝对布局和AutoLayout相对布局.而在Android中的布局方式就比较丰富了,今天博客中会介绍四种常用的布局方式.先总结一下控件,然后再搞一搞基本方式,开发环境还是用的Mac下的Android Studio.开始今天的正题, 虽然A

Android UI-自定义日历控件

Android UI-自定义日历控件 本篇博客笔者给大家分享一个日历控件,这里有个需求:要求显示当前月的日期,左右可以切换月份来查看日期. 我们想一想会如何去实现这样的一个控件,有开源的,但可能不太满足我们的特定的需求,这里笔者自定义了一个,读者可以根据自己的需求来修改代码.下面来说一下实现的思路: 首先我们要显示当前月份,自然我们要计算出当前的日期,并且把每一天对应到具体的星期,我们会有以下效果: 我们先想一下这样的效果用什么控件可以实现?很自然可以想到用网格视图GridView,但这里笔者使

Android学习Scroller(三)——控件平移划过屏幕 (Scroller简单使用)

MainActivity如下: package cc.cn; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.app.Activity; /** * Demo描述: * Scroller使用示例--让控件平移划过屏幕 * * 参考资料: * http://blog.cs

ios--控件--自定义封装一个控件

感谢原作者的分享: http://blog.csdn.net/zhangao0086/article/details/45622875 前言 一个控件从外在特征来说,主要是封装这几点: 交互方式 显示样式 数据使用 对外在特征的封装,能让我们在多种环境下达到 PM 对产品的要求,并且提到代码复用率,使维护工作保持在一个相对较小的范围内:而一个好的控件除了有对外一致的体验之外,还有其内在特征: 灵活性 低耦合 易拓展 易维护 通常特征之间需要做一些取舍,比如灵活性与耦合度,有时候接口越多越能适应各

Windows程序==&gt;&gt;使用ListView控件展示数据

使用ListView控件展示数据 01.ImageList控件 1.了解了解         属性 说明 Images 储存在图像列表中的所有图像 ImageSize 图像列表中图像的大小 Transparent 被视为透明的颜色 ColorDepth 获取图像列表的颜色深度 Images中图像的存放方式与存放在数组中一样,通过Count属性可以获得Images中图像的个数.每个图像都有一个索引值,从0开始,使用Images[索引值],可以定位到一个图像. ImageList控件所包含的图像可以

android 下动态获取控件的id

有时候我们需要动态的取得一个一个控件的id,然后进行操作,经过在网上查找,找到了一下方法getResources().getIdentifier("textView01", "id", "cn.xxx.xxx"); 第一个参数为ID名,第二个为资源属性是ID或者是Drawable,第三个为包名. 以下是从网上找到资料:主要由两种方法,个人建议第二种. 1. 不把图片放在res/drawable下,而是存放在src某个package中(如:com.

Android下拉刷新控件SwipeRefreshLayout源码浅析

SwipeRefreshLayout是Android官方的下拉刷新控件,使用简单,界面美观,不熟悉的朋友可以随便搜索了解一下,这里就不废话了,直接进入正题. 这种下拉刷新控件的原理不难,基本就是监听手指的运动,获取手指的坐标,通过计算判断出是哪种操作,然后就是回调相应的接口了.SwipeRefreshLayout是继承自ViewGroup的,根据Android的事件分发机制,触摸事件应该是先传递到ViewGroup,根据onInterceptTouchEvent的返回值决定是否拦截事件的,那么就