Android工程师面试准备知识点
Android工程师面试准备知识点听+7哥说,把下面的全弄懂,面试必过,所以我就试着去把所有题目补充了一下,各位能耐的网友们,如果有吐槽或者补充的尽管给我留言,在这里谢过大家了。1. android的多线程如何通信答:Android提供了Handler和Looper来满足线程间的通信。Handler是消息的处理者,可以发布或者处理或者操作一个Runnable, handler接受消息后调用handleMessage进行处理。Looper是Handler与消息队列之间通讯桥梁,程序组件通过Handler把消息传递给Looper,Looper把消息放入队列。2. android的多进程通信原理答:Android实现跨进程通信的方式是采用的是AIDL方式AIDL(Android 接口描述语言)是一种接口口描述语言; 编译器可以通过aidl 文件生成一段代码,通过预先定义的接口达到两个进程内部通信进程的目的. 如果需要在一个Activity 中, 访问另一个Service 中的某个对象, 需要先将对象转化成AIDL 可识别的参数(可能是多个参数), 然后使用AIDL 来传递这些参 数, 在消息的接收端, 使用这些参数组装成自己需要的对象.原理:进程之间的通信信息,首先会被转换成AIDL协议消息,然后发送给对方,对方收到AIDL协议消息后再转换成相应的对象。由于进程之间的通信信息需要双向转换,所以android采用代理类在背后实现了信息的双向转换,代理类由android编译器生成,对开发人员来说是透明的。3. Android五大组件 怎么使用答:Activity、Intent、Service、Content Provider,Broadcast ReceiverActivity:字面意思为“活动”,简单来说就是一个屏幕,通过调用setContentView()来设置要显示的界面。Intent:表示“意图”,可以实现Activity与Activity之间的交互,传递数据。Service:表示服务,与Activity一样默认运行于主线程,但是它没有可视化界面,是运行在后台。通过调用startService或bindService方法来启动来启动服务。Content Provider:为解决应用程序间数据通信、共享的问题而引入的。Broadcast Receiver: 广播接收器,Android的广播要么来自系统,要么来自普通程序。可以在AndroidMenifest.xml注册广播接收器或在代码中注册。4. service启动默认是什么线程答:默认启动的是主线程5. 使用过哪些设计模式进行开发答:单例模式、工厂模式、观察者模式6. 线程池有什么优点缺点答:优点就是减少创建线程的消耗,每次创建线程都从线程池中拿。缺点是一直占用内存。7. 多种布局方式的特点,怎么使用答:线性布局-LinearLayoutorientation-容器内元素的排列方式。vertical:子元素们垂直排列horizontal:子元素水平排列这是用得最多的一种布局,通过设置orientation来决定子元素是按照什么方式排列。绝对布局-AboluteLayoutlayout_x:x坐标。以左上角为顶点。layout_y:y坐标。以做上角为顶点。这个布局被摒弃了,不够灵活相对布局-RelativeLayoutlayout_centerInParent – 将当前元素放置到其容器内的水平方向和垂直方向的中央位置(类似的属性有:layout_centerHorizontal,layout_alignParentLeft等)layout_marginLeft – 设置当前元素相对于其容器的左侧边缘的距离layout_below – 放置当前元素到指定的元素的下面layout_alignRight – 当前元素与指定的元素右对齐这个布局也是经常用的,一般想要复杂的布局,它少不了,因为它可以很好的定位。表格布局-TableLayout表格布局主要以行列的方式来管理子控件,其中每一行即一个TableRow对象,每个TableRow对象可以添加子控件,并且每假如一个控件即相当于添加了一列。帧布局-FrameLayout也叫层叠布局。以左上角为起点,将FrameLayout内的元素一层覆盖一层地显示,在帧布局中,先添加的图片被后添加的图片覆盖。8.android的数据库使用是否熟悉答:SQLite是Android内嵌的一个轻量级数据库,说实在我用得并不多,不太熟悉。9.android的xml解析有哪些 有什么区别答:在Android平台上可以使用SAX(Simple API for XML)、Document Object Model(DOM)和Android附带的Pull解析器解析XML文件。DOM解析:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问解析过程:1. 获取factoryDocumentBuilderFactory builderFactory =DocumentBuilderFactory.newInstance();2. 获取builderbuilder =builderFactory.newDocumentBuilder();3. 解析为Document对象Document document = builder.parse(xmlFile);4. 获取根元素Element root = document.getDocumentElement();5. 获取根元素下的子节点NodeList childNodes =root.getChildNodes();SAX解析:不像DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问。1. 获取factorySAXParserFactory factory =SAXParserFactory.newInstance();2. 获取ParserSAXParser parser =factory.newSAXParser();3. 开始解析parser.parser(xmlFile, newMySAXListener());PULL解析: 除了可以使用 SAX和DOM解析XML文件,大家也可以使用Android内置的Pull解析器解析XML文件。 Pull解析器的运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型元素的值。1. 获取parserXmlPullParserparser = Xml.newPullParser();2. 设置输入parser.setInput(instream, “UTF-8”);3. 获取事件类型int eventType = parser.getEventType();4. 开始解析10.android的基础类库有哪些 例如 List 、Set、 HashSet有什么区别,如何排除重复的数据答:android.app :提供高层的程序模型、提供基本的运行环境android.content :包含各种的对设备上的数据进行访问和发布的类android.database :通过内容提供者浏览和操作数据库android.graphics :底层的图形库,包含画布,颜色过滤,点,矩形,可以将他们直接绘制到屏幕上.android.location :定位和相关服务的类android.media :提供一些类管理多种音频、视频的媒体接口android.net :提供帮助网络访问的类,超过通常的 java.net.* 接口android.os :提供了系统服务、消息传输、 IPC 机制android.opengl :提供 OpenGL 的工具android.provider :提供类访问 Android 的内容提供者android.telephony :提供与拨打电话相关的 API 交互android.view :提供基础的用户界面接口框架android.util :涉及工具性的方法,例如时间日期的操作android.webkit :默认浏览器操作接口android.widget :包含各种 UI 元素(大部分是可见的)在应用程序的屏幕中使用List按对象进入的顺序保存对象,不做排序或编辑操作。Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于Set,而不关心它的顺序--否则应该使用List)。具体查看http://blog.csdn.net/wwj_748/article/details/788398811.做过什么东西,介绍一下。答:我做过一个新闻客户端,还有一个音乐播放器,实习正在做的是一个语音邮箱客户端,正在开发当中的一个新浪微博客户端。1. 新闻客户端是我在大学参加软件开发大赛的一个作品,它是一款手机应用,用来显示新闻信息,可供用户查看和评论新闻。2. 简、美音乐播放器是我自主研发的一个音乐播放器,本着想做一款简单、漂亮的音乐播放器给自己用。3. 语言邮箱是我自己在实习公司参与开发的一款产品,是我们公司的一款产品。4. &nbs补充:移动开发 , Android ,
上一个:Android 内存检测
下一个:android控件上面实现提醒信息