Android面试笔试必会系列题目Word格式.docx

上传人:b****6 文档编号:21807907 上传时间:2023-02-01 格式:DOCX 页数:18 大小:141.15KB
下载 相关 举报
Android面试笔试必会系列题目Word格式.docx_第1页
第1页 / 共18页
Android面试笔试必会系列题目Word格式.docx_第2页
第2页 / 共18页
Android面试笔试必会系列题目Word格式.docx_第3页
第3页 / 共18页
Android面试笔试必会系列题目Word格式.docx_第4页
第4页 / 共18页
Android面试笔试必会系列题目Word格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

Android面试笔试必会系列题目Word格式.docx

《Android面试笔试必会系列题目Word格式.docx》由会员分享,可在线阅读,更多相关《Android面试笔试必会系列题目Word格式.docx(18页珍藏版)》请在冰豆网上搜索。

Android面试笔试必会系列题目Word格式.docx

–s 

HVGA 

–c 

d:

\card.img

N:

name,T:

targetS:

skinC:

sdcard

5.View,surfaceView,GLSurfaceView有什么区别。

view是最基础的,必须在UI主线程内更新画面,速度较慢。

SurfaceView是view的子类,类似使用双缓机制,在新的线程中更新画面所以刷新界面速度比view快。

GLSurfaceView是SurfaceView的子类,opengl 

专用的。

6.请写一段代码(SAX,DOM,或者pull)来解析XML文档。

下面是要解析的XML文件:

person.xml:

<

?

xmlversion=”1.0″encoding=”UTF-8″?

>

persons>

person 

id=”1″>

name>

张三<

/name>

age>

22<

/age>

/person>

id=”2″>

李四<

23<

/persons>

定义一个名为Person的javaBean用于存放上面解析出来的xml内容

publicclass 

Person{

private 

Integerid;

Stringname;

Shortage;

public 

IntegergetId(){

return 

id;

publicvoid 

setId(Integerid){

this.id=id;

StringgetName(){

name;

setName(Stringname){

this.name=name;

ShortgetAge(){

returnage;

setAge(Shortage){

this.age=age;

}}

DOM解析XML文件时,会将XML文件的所有内容读取到内存中,然后允许您使用DOMAPI遍历XML树、检索所需的数据。

DOMPerson.java

import 

java.io.InputStream;

java.util.ArrayList;

java.util.List;

javax.xml.parsers.DocumentBuilder;

javax.xml.parsers.DocumentBuilderFactory;

org.w3c.dom.Document;

org.w3c.dom.Element;

org.w3c.dom.Node;

org.w3c.dom.NodeList;

com.sinber.domain.Person;

DOMPerson{

publicstatic 

List<

Person>

getPerson() 

throws 

Exception{

pers=new 

ArrayList<

();

InputStreaminStream=SAXPersonService.class.getClassLoader().getResourceAsStream(“person.xml”);

DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();

DocumentBuilderbuilder=factory.newDocumentBuilder();

Documentdom=builder.parse(inStream);

Elementroot=dom.getDocumentElement();

NodeListpersons=root.getElementsByTagName(“person”);

for(int 

i=0;

i<

persons.getLength();

i++){

ElementpersonNode=(Element)persons.item(i);

Personperson=new 

Person();

person.setId(new 

Integer(personNode.getAttribute(“id”)));

NodeListchildNodes=personNode.getChildNodes();

j=0;

j<

childNodes.getLength();

j++){

NodechildNode=childNodes.item(j);

if(childNode.getNodeType()==Node.ELEMENT_NODE){

Elementelement 

=(Element)childNode;

if(“name”.equals(childNode.getNodeName())){

person.setName(new 

String(element.getFirstChild().getNodeValue()));

}elseif(“age”.equals(childNode.getNodeName())){

person.setAge(new 

Short(element.getFirstChild().getNodeValue()));

pers.add(person);

inStream.close();

pers;

7.已知单链表的头结构head,写一个函数把这个链表逆序。

Node.java

Node{

Integercount;

NodenextNode;

Node(){

Node(int 

count){

this.count=new 

Integer(count);

IntegergetCount(){

count;

setCount(Integercount){

this.count=count;

NodegetNextNode(){

nextNode;

setNextNode(NodenextNode){

this.nextNode=nextNode;

ReverseSingleLink.java

ReverseSingleLink{

NoderevSingleLink(Nodehead){

if(head==null){ 

//链表为空不能逆序

head;

if(head.getNextNode()==null){ 

//如果只有一个结点,当然逆过来也是同一个

Noderhead=revSingleLink(head.getNextNode());

head.getNextNode().setNextNode(head);

head.setNextNode(null);

rhead;

publicstaticvoid 

main(String[]args){

Nodehead=new 

Node(0);

Nodetemp1=null,temp2=null;

i=1;

100;

temp1=new 

Node(i);

if(i==1){

head.setNextNode(temp1);

}else{

temp2.setNextNode(temp1);

temp2=temp1;

head=revSingleLink(head);

while(head!

=null){

head=head.getNextNode();

8.10个常用linux命令和常用Android相关命令?

ls 

cd 

rm 

find 

cp 

cat 

grepmore 

whovi 

1.cd目录名2.vi文件名

3.rm[选项]文件列表4.cat[选项]文件列表(如:

catuserinfo.xml)

5.cp[选项]源文件目标文件6.find目录列表匹配标准

7.grep[选项]正则表达式文件列表8.ls[选项][文件列表](如:

ls)

9.more[选项]文件名10.who[选项]utmp式的文件

androidcreateavd–n<

-t<

targetID>

androidlisttarget

adbpushd:

\test.txt/sdcard/

adbpull/sdcard/test.txtd:

/

adbinstalltest.apk

ls

sqlite3studDB.db

catuserinfo.xml

9.Socket实现客户端-服务器通信?

服务器端:

ServerSocket 

server=newServerSocket(8888);

While(true){

Socketclient=server.accept();

//侦听并接受到此套接字的连接

OutputStreamout=client.getOutputStream();

//返回此套接字的输出流

Stringmsg=”Hello”;

out.write(msg.getBytes());

client.close();

客户端:

Socketsocket=newSocket(“192.168.1.101″,8888);

InputStreamin=socket.getInputStream();

byte[]buffer=newbyte[in.avaiable()];

in.read(buffer);

Stringmsg=newString(buffer);

10.定义一个ProgressBar用线程完成下载?

ProgressBar

android:

id=”@+id/bar”

layout_width=”fill_parent”

layout_height=”wrap_content”

max=”100″

style=”@android:

style/Widget.ProgressBar.Horizontal”

/>

bar=(ProgressBar)findViewById(R.id.bar);

Handlerhandler=newHandler(){

publicvoidhandleMessage(Messagemsg){

If(msg.what==0×

111){

bar.setProgress(status);

newThread(){

publicvoidrun(){

while(status<

100){

status+=5;

Thread.sleep(100);

Messagem=newMessage();

m.what=0×

111;

handler.sendMessage(m);

也可Timertimer=newTimer();

timer.schedule(new 

TimerTask(){runnable}, 

longdelay,longperiod)

也可handler.postDelayed(runnable,longdelayMillis);

11.dp和px转换关系?

px=dp*(dpi/160)

QVGA:

density=0.75densityDpi=120QVGA(240*320) 

(Quarter:

1/4)

HVGA:

density=1.0densityDpi=160HVGA(320*480) 

(Half:

1/2)

VGA:

density=1.0densityDpi=160VGA(480*640)

WVGA:

density=1.5densityDpi=240WVGA(480*800)(Wide)

WQVGA:

density=2.0densityDpi=120WQVGA(240*400)(Wide 

Quarter)

dip值表示每英寸有多少个显示点(像素密度)。

当densityDip=160时,1dp=1px。

12.AndroidSDK下的常用工具有哪些?

platform-tools目录下常用的工具有:

aapt、adb、dx、aidl

tools目录下常用的工具有:

android、apkbuilder、ddms、draw9patch、emulator、mksdcard、sqlite3

13.Android线程涉及的技术有哪些?

它们间的关系怎样。

Message、Handler、MessageQueue、Looper。

Message:

就是Handler接收和处理的消息。

Looper:

每个线程只能拥有一个Looper。

它的loop方法负责读取MessageQueue中的消息,读到信息之后就把消息交给发送该消息的Handler进行处理。

MessageQueue:

消息队列,它采用先进先出的方式来管理Message。

程序创建Looper对象时会在它的构造器中创建Looper对象。

Looper提供的构造器代码如下:

privateLooper(){

mQueue=newMessageQueue();

mRun=true;

mThread=Thread.currentThread();

从上面代码不难看出程序在初始化Looper时会创建一个与之关联的MessageQueue,这个MessageQueue就负责管理消息。

Handler:

它的作用有两个:

发送消息,程序使用Handler发送消息,被Handler发送的消息必须被送到指定的MessageQueue。

也就是说,如果希望Handler正常工作,必须在当前线程中有一个MessageQueue,否则消息就没有MessageQueue进行保存了。

不过MessageQueue是由Looper负责管理的,也就是说,如果希望Handler正常工作,必须在当前线程中有一个Looper对象。

为了保证当前线程中有Looper对象,可以分两种情况处理:

-程序UI线程中,系统已经初始化了一个Looper对象,因此程序直接创建Handler即可,然后就可通过Handler来发送消息、处理消息。

-程序员自己启动的子线程,程序员必须自己创建一个Looper对象,并启动它。

创建Looper对象调用它的prepare()方法即可。

prepare方法保证每个线程最多只有一个Looper对象,prepare方法的源代码如下:

publicstaticfinalvoidprepare(){

if(sThreadLocal.get()!

=null){

thrownewRuntimeException(“OnlyoneLoopermaybecreatedperthread”);

sThreadLocal.set(newLooper());

然后调用Looper的静态loop()方法来启动它,loop方法就是使用一个死循环不断都取出MessageQueue中的消息,并将取出的消息分给该消息对应的Handler进行处理。

归纳起来:

每个线程只有一个,它负责管理MessageQueue,它会负责不断的从MessageQueue中取出消息,并将消息分给对应的Handler处理。

由Looper负责管理。

它采用先进先出的方式来管理所有Message。

它能把消息发送给Looper管理的MessageQueue,并负责处理Looper分给它的消息。

14.TCP/IP协议

这部分简要介绍一下TCP/IP的内部结构,为讨论与互联网有关的安全问题打下基础。

TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议之上。

确切地说,TCP/IP协议是一组包括TCP协议和IP协议,UDP(UserDatagramProtocol)协议、ICMP(InternetControlMessageProtocol)协议和其他一些协议的协议组。

TCP/IP整体构架概述:

TCP/IP协议并不完全符合OSI的七层参考模型。

传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。

该模型的目的是使各种硬件在相同的层次上相互通信。

这7层是:

物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。

而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

这4层分别为:

应用层:

应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。

传输层:

在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。

互连网络层:

负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。

网络接口层:

对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、SerialLine等)来传送数据。

TCP/IP中的协议

以下简单介绍TCP/IP中的协议都具备什么样的功能,都是如何工作的:

1.IP 

网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。

IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层—TCP或UDP层;

相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。

IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。

IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。

高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。

也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。

IP确认包含一个选项,叫作IPsourcerouting,可以用来指定一条源地址和目的地址之间的直接路径。

对于一些TCP和UDP的服务来说,使用了该选项的IP包好象是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。

这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。

那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。

2.TCP 

如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向’上’传送到TCP层。

TCP将包排序并进行错误检查,同时实现虚电路间的连接。

TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。

TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。

应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。

面向连接的服务(例如Telnet、FTP、rlogin、XWindows和SMTP)需要高度的可靠性,所以它们使用了TCP。

DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。

15.AIDL简单描述

AIDL全称AndroidInterfaceDefinitionLang

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 工作计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1