Android工程师试卷_第1页
Android工程师试卷_第2页
Android工程师试卷_第3页
Android工程师试卷_第4页
Android工程师试卷_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android工程师试卷1、基本面针对个人情况在合适的栏内打勾,以了解基本面的熟悉程度。领域技能一般熟练精通应用平台Unix/LinuxAndroidWindows语言ASMC/C+JAVAJSPHTMLJavaScriptC#,.NETUnix Shell脚本批处理脚本PHP数据库ORACLEDB2MYSQLSQLiteMS SQLServerWebServerWebLogicWebSphereTomCatApache相关技术Ajax,JQuery,extJS,easyUIJSONCXFIbatis/mybatisStruts/Spring/HibernateSocketJNICORBAEjb进程间通信XML,DTDRADIUS/PAMDES,DES3,RSA,MD5,Base64开发工具Eclipse(Java)Eclipse(C/C+)Eclipse(Java fro Android)NetBeansVisual Studio(2005-2010)版本控制工具SVNVSSCVSGITClear Case协议TCP/IP,UDPHTTPFTPTELNETSSH设计工具Ration RoseERWinPowerDesignerFlashPhotoshop测试LoadRunnerJUnitAndroidJUnitJMock2、面试题2.1 概念1. 从一个序列中检索一个值。列举出几个构造序列的方法,哪种方式检索效率最高?2. 从操作系统角度请阐述一下线程与进程的区别答:进程是系统进行资源分配和调度的一个独立单位,线程是CPU调度和分派的基本单位进程和线程的关系:(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。(3)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。(4)处理机分给线程,即真正在处理机上运行的是线程。(5)线程是指进程内的一个执行单元,也是进程内的可调度实体。线程与进程的区别:(1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位。(2)并发性:不仅进程之间可以并发执行,同一个进程的多个线程之间也可以并发执行。(3)拥有资源:进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源。(4)系统开销:在创建或撤销进程的时候,由于系统都要为之分配和回收资源,导致系统的明显大于创建或撤销线程时的开销。但进程有独立的地址空间,进程崩溃后,在保护模式下不会对其他的进程产生影响,而线程只是一个进程中的不同的执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但是在进程切换时,耗费的资源较大,效率要差些。2.2数据库篇1、下表表名:T_STAFF,主键是STAFF_ID,请按照一个常用数据库写出该表的建表语句。并写出一条触发器,使得新增记录时,将CREATE_TIME设置为系统时间。字段名字段类型描述STAFF_IDNUMBER(8)非空,主键STAFF_NAMEVARCHAR(60)非空,唯一索引STAFF_PASSWORDVARCHAR(128)可空STAFF_STATUSNUMBER(2)非空CREATE_TIMEDATETIME非空Create Table if not exists T_STAFF (STAFF_ID NUMBER(8) primary key NOT NULL Auto_increment,index name STAFF_NAME Varchar(60) not null,STAFF_PASSWORD varchar(128),Staff_Status Number(20) not null,Create_Time dateTime not null);触发器语句:Create Trigger insertTrigger before insert T_STAFF for begin insert into T_Staff(Create_Time) values(now();2.3 C/C+篇1、如何理解指针概念。答:指针是存放地址的变量struct Link struct Link * lpNext;Bool isCycleLink(struct Link * lpLink);1. 如下数据结构是个链表,如何判断该链表是个无环链表?char str = “1234567890123456789012345678901234567890”;str15=0;2、下面的字符串长度是几?3、请列出用C语言写一个socket客户端并从中读取数据的步骤。首先是服务端的代码如下:-server.c-#include #include #include #include #include #include #include int main() int sockfd,clientfd,len; struct sockaddr_in server_addr,client_addr; char buffer256; sockfd=socket(AF_INET,SOCK_STREAM,0); if(sockfd ); exit(1); server_addr.sin_family=AF_INET; server_addr.sin_port=8888; server_addr.sin_addr.s_addr=INADDR_ANY; if(bind(sockfd,(struct sockaddr *)&server_addr,sizeof(struct sockaddr) ); exit(2); listen(sockfd,5); len=sizeof(struct sockaddr); printf(waiting for client:n); clientfd=accept(sockfd,(struct sockaddr *)&client_addr,&len); /* recv(clientfd,buffer,256,0);*/ memset(buffer,0,256); read(clientfd,buffer,256); printf(server received : %sn,buffer); memset(buffer,0,256); strcpy(buffer,server has received your message.); /*send(clientfd,buffer,strlen(buffer),0);*/ write(clientfd,buffer,strlen(buffer); close(clientfd); close(sockfd); return 0;-然后这里放的是客户端的代码-client.c-#include #include #include #include #include #include #include int main() int sockfd,len; struct sockaddr_in server_addr; char buffer256; sockfd=socket(AF_INET,SOCK_STREAM,0); if(sockfd ); exit(1); server_addr.sin_family=AF_INET; server_addr.sin_port=8888; inet_aton(8,&server_addr.sin_addr.s_addr); if(connect(sockfd,(struct sockaddr *)&server_addr,sizeof(struct sockaddr) ); exit(2); memset(buffer,0,256); strcpy(buffer,this is a message that client sended.); /* send(sockfd,buffer,strlen(buffer),0);*/ write(sockfd,buffer,strlen(buffer); /*recv(sockfd,buffer,256,0);*/ memset(buffer,0,256); read(sockfd,buffer,256); printf(server said : %sn,buffer); close(sockfd); return 0;然后是需要在secureCRT等软件中进行编译 $ gcc server.c -o server -lsocket -lc $ gcc client.c -o client -lsocket -lnsl编译通过之后就是测试的过程了,同时在secureCRT中打开两个窗口,一个运行./server 另一个窗口运行./clientserver端先运行。2.4 Java篇1、请阐述一下你对java多线程中同步的几种方式,区别,及其重要性。(1) wait方法: 该方法属于Object的方法,wait方法的作用是使得当前调用wait方法所在部分(代码块)的线程停止执行,并释放当前获得的调用wait所在的代码块的锁,并在其他线程调用notify或者notifyAll方法时恢复到竞争锁状态(一旦获得锁就恢复执行)。 调用wait方法需要注意几点: 第一点:wait被调用的时候必须在拥有锁(即synchronized修饰的)的代码块中。 第二点:恢复执行后,从wait的下一条语句开始执行,因而wait方法总是应当在while循环中调用,以免出现恢复执行后继续执行的条件不满足却继续执行的情况。 第三点:若wait方法参数中带时间,则除了notify和notifyAll被调用能激活处于wait状态(等待状态)的线程进入锁竞争外,在其他线程中interrupt它或者参数时间到了之后,该线程也将被激活到竞争状态。 第四点:wait方法被调用的线程必须获得之前执行到wait时释放掉的锁重新获得才能够恢复执行。(2) notify方法和notifyAll方法: notify方法通知调用了wait方法,但是尚未激活的一个线程进入线程调度队列(即进入锁竞争),注意不是立即执行。并且具体是哪一个线程不能保证。另外一点就是被唤醒的这个线程一定是在等待wait所释放的锁。 notifyAll方法则唤醒所有调用了wait方法,尚未激活的进程进入竞争队列。(3) synchronized关键字: 第一点:synchronized用来标识一个普通方法时,表示一个线程要执行该方法,必须取得该方法所在的对象的锁。 第二点:synchronized用来标识一个静态方法时,表示一个线程要执行该方法,必须获得该方法所在的类的类锁。 第三点:synchronized修饰一个代码块。类似这样:synchronized(obj) /code. 。表示一个线程要执行该代码块,必须获得obj的锁。这样做的目的是减小锁的粒度,保证当不同块所需的锁不冲突时不用对整个对象加锁。利用零长度的byte数组对象做obj非常经济。(4) atomic action(原子操作): 在JAVA中,以下两点操作是原子操作。但是c和c+中并不如此。 第一点:对引用变量和除了long和double之外的原始数据类型变量进行读写。 第二点:对所有声明为volatile的变量(包括long和double)的读写。 另外:在java.util.concurrent和java.util.concurrent.atomic包中提供了一些不依赖于同步机制的线程安全的类和方法。2、final,finally,finalize的区别。final修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。 finally再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。 finalize方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。3、sleep()和wait()有什么区别?sleep是线程被调用时,占着cpu去睡觉,其他线程不能占用cpu,os认为该线程正在工作,不会让出系统资源,wait是进入等待池等待,让出系统资源,其他线程可以占用cpu4、abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?不可以5、当一个线程进入一个对象的一个synchronizated方法后,其他线程是否可以进入此对象的其他方法?可以去访问非Synchronized方法。6、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?值传递7、创建一个class对象有几种方法?分别是什么?1.Class c=Class.for(“java.lang.String”);2.String str=new Stirng();Class c=Str.getClass();3.Class c=String.Class;8、如何在java中调用C编写的函数?9、如何获取一个目录下有多少个文件?File f=new File(“D:/”);Int count=f.list().length;public class FatherClassPublic FatherClass()System.out.println(“FatherClass Create”);public static class ChildClass extends FatherClass10、请写出下列代码的输出结果:public ChildClass()System.out.println(“ChildClass Create”);public static void main(String args)FatherClass fc = new FatherClass();ChildClass cc = new ChildClass();FatherClass CreateFatherClass CreateChildClass Create11、请用Socket写一个客户端,并从中读出一行打印出来。Socket socket=null;try socket=new Socket(,8888); BufferedReader pw = new BufferedReader(new InputStreamReader(socket.getInputStream(); System.out.println(pw.readLine(); pw.close();catch(Exception e) e.printStackTrace();Finally Try socket.close(); catch(IOException e e.printStackTrace(); 12、如何指定给java程序运行时需要的内存?13、当一个对象不再被使用时,如何才能从内存中消失?将该对象引用值为空14、请写一个整数组成的矩阵转置程序,即行变成列,列变成行。int transpose(int t);int transponse(int t);public int transponse(int t)int f=new intt0.lengtht.length; for(int i=0;it.length;i+)int index=0; index+; for(int x=0;iti.length;i+) int m=0; m+; fmindex=tix;Return f;15、现有面值分别为10元、30元、50元、100元面值的卡,但卡的成本分别为99%,98%,97%,96%。现有客户要求充值x元(x是10的整数倍),试写一个算法,使得选取的卡综合成本最低。16、有n列火车通过一个后进先出的调度站,请设计一个算法,输出所有可能的调度结果。2.5 Android篇1、请阐述android中Intent的作用Intent用于实现android中各个组件之间的通讯。也可以对应用中一次操作的动作 ,动作所涉及的数据,进行描述。实现了android系统各组件调用与被调用的解耦。2、Activity的退出方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论