首页 android面试题和答案

android面试题和答案

举报
开通vip

android面试题和答案  什么是 Activity? 通俗一点说 Activity就是一个界面,这个界面里面可以放置各种控件。Activity的界面也是 用 xml文件表示的,放置在 res->layout下面。每生成一个新的 Activity后,我们需要在 AndroidManifest.xml中注册一下这个 activity  请描述一下 Activity生命周期。 onCreate(Bundle savedInstanceState):创建 activity时调用。设置在该方法中,还以 Bundle 的形式提...

android面试题和答案
 什么是 Activity? 通俗一点说 Activity就是一个界面,这个界面里面可以放置各种控件。Activity的界面也是 用 xml文件表示的,放置在 res->layout下面。每生成一个新的 Activity后,我们需要在 AndroidManifest.xml中注册一下这个 activity  请描述一下 Activity生命周期。 onCreate(Bundle savedInstanceState):创建 activity时调用。设置在该 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 中,还以 Bundle 的形式提供对以前储存的任何状态的访问! onStart():activity变为在屏幕上对用户可见时调用。 onResume():activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法 总是被调用的)。 onPause():activity被暂停或收回 cpu和其他资源时调用,该方法用于保存活动状态的,也 是保护现场,压栈吧! onStop():activity被停止并转为不可见阶段及后续的生命周期事件时调用。 onRestart():重新启动 activity时调用。该活动仍在栈中,而不是启动新的活动。 onDestroy():activity被完全从系统内存中移除时调用,该方法被调用  两个 Activity之间跳转时必然会执行的是哪几个方法。 onCrante() //在 Activity生命周期开始时调用 onRestoreInstanceState()//用来恢复 UI状态 onReStart()//当 Activity重新启动时调用 onStart()//Activity对用户即将可见时调用 onResume()//当 Activity与用户交互时,绘制界面 onSaveInstanceState()//activity即将移出栈顶保留 UI状态时调用 onPause()//暂停当前活动 activity,提交持久数据的改变,停止动画和其他占用 CPU资源的 东西,由于下一个 activity在这个方法返回之前不会 resume,所以这个方法的代码执行要快。 onStop()//activity不再可见时调用 onDestroy()//在 Activity销毁钱被调用的最后一个方法。  横竖屏切换时候 Activity的生命周期。 1、不设置 Activity的 android:configChanges时,切屏会重新调用各个生命周期,切横屏时 会执行一次,切竖屏时会执行两次 2、设置 Activity的 android:configChanges="orientation"时,切屏还是会重新调用各个生命 周期,切横、竖屏时只会执行一次 3、设置 Activity的 android:configChanges="orientation|keyboardHidden"时,切屏不会重 新调用各个生命周期,只会执行 onConfigurationChanged方法  如何将一个 Activity设置成窗口的样式。 1、在你的 styles.xml文件中可以新建一如下的类似 Dialog的 style 2、在 AndroidManifest.xml中在你需要显示为窗口的 activity中添加如下属性: android:theme="@style/Theme.FloatActivity" 即可 也可以直接添加您对应需要展示为 Dialog style的 Activity的 android:theme属性值为 android:theme="@android:style/Theme.Dialog"。  你后台的 Activity被系统回收怎么办? 系统会帮我们记录下回收前 Activity的状态,再次调用被回收的 Activity就要重新调用 onCreate()方法,不同于直接启动的是这回 onCreate()里是带上参数 savedInstanceState。 savedInstanceState是一个Bundle对象,你基本上可以把他理解为系统帮你维护的一个Map 对象,我们使用 savedInstanceState可以恢复到回收前的状态。  如何退出 Activity?如何安全退出已调用多个 Activity的 Application? 用 finish()方法退出 activity. 在 2.1之前,可以使用 ActivityManager的 restartPackage方法。 它可以直接结束整个应用。在使用时需要权限 android.permission.RESTART_PACKAGES。 在 2.2,这个方法失效了,可使用以下几个人工的方法 1、记录打开的 Activity: 每打开一个 Activity,就记录下来。在需要退出时,关闭每一个 Activity即可。 2、发送特定广播: 在需要结束应用时,发送一个特定的广播,每个 Activity收到广播后,关闭即可。  如果后台的 Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态? 被回收前调用 onSaveInstanceState()方法保存当前状态。  两个 Activity之间怎么传递数据? 在 Intent的对象中增加要传递的参数既可。 在 Intent的对象的请求中加入键值对,对象名字.putExtra("键值对的名字","键值对的值"); 在另一个 Activity中将 Intent请求中的数据取出来: Intent intent=getIntent();// String value = intent.getStringExtra("testIntent");//将 testIntent对应的值赋值给 value  怎么在启动一个 Activity时就启动一个 service? 将启动 Service的语句放在 onCreate()方法中。  同一个程序,但不同的 Activity是否可以放在不同的 Task任务栈中? 可以放在不同的 Task中。需要为不同的 activity设置不同的 taskaffinity属性,启动 activity 的 Intent需要包含 FLAG_ACTIVITY_NEW_TASK标记。  Activity怎么和 service绑定,怎么在 activity中启动自己对应的 service? 1、Activity能进行绑定得益于 Service的接口。为了支持 Service的绑定,实现 onBind方法。 2、Service和 Activity的连接可以用 ServiceConnection来实现。你需要实现一个新的 ServiceConnection,重写 onServiceConnected和 onServiceDisconnected方法,一旦连接 建立,你就能得到 Service实例的引用。 3、执行绑定,调用 bindService方法,传入一个选择了要绑定的 Service的 Intent(显式或 隐式)和一个你实现了的 ServiceConnection实例  什么是 Service以及描述下它的生命周期。 Android Service是运行在后台的代码,不能与用户交互,可以运行在自己的进程,也可以 运行在其他应用程序进程的上下文里。需要通过某一个 Activity或者其他 Context对象来调 用, Context.startService() 和 Context.bindService()。 如果在 Service执行耗时的操作 需要启动一个新线程来执行。 Android Service只继承了 onCreate(),onStart(),onDestroy()三个方法,当我们第一次启动 Service时,先后调用了 onCreate(),onStart()这两个方法,当停止 Service时,则执行 onDestroy()方法,这里需要注意的是,如果 Service已经启动了,当我们再次启 Service时, 不会在执行 onCreate()方法,而是直接执行 onStart()方法。  Service有哪些启动方法,有什么区别,怎样停用 Service? 两种启动 Service的方式 Context.startService() 和 Context.bindService()。 区别 为 Context.startService():Service会经历 onCreate -> onStart(如果 Service还没有运行, 则android先调用onCreate()然后调用onStart();如果Service已经运行,则只调用onStart(), 所以一个 Service的 onStart方法可能会重复调用多次 );stopService的时候直接 onDestroy,如果是调用者自己直接退出而没有调用 stopService的话,Service会一直在后 台运行。该 Service的调用者再启动起来后可以通过 stopService关闭 Service Context.bindService():Service会经历 onCreate() -> onBind(),onBind将返回给客户端 一个 IBind接口实例,IBind允许客户端回调服务的方法,比如得到 Service运行的状态或其 他操作。这个时候把调用者(Context,例如 Activity)会和 Service绑定在一起,Context 退出了,Srevice就会调用 onUnbind -> onDestroyed相应退出,所谓绑定在一起就共存亡 了 。 停用 service使用 context.stopService()  不用 service,B页面为音乐播放,从 A跳转到 B,再返回,如何使音乐继续播放? a 使用 startActivityForResult() 方法开启 b,b类结束时调用 finish(); a类的 intent有一个子 activity结束事件 onActivityResult(),在事件里继续播放音乐  什么是 IntentService?有何优点? IntentService也是一个 Service,是 Service的子类, IntentService和 Service有所不同,通过 Looper和 Thread来解决 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 Service中处理逻辑 的阻塞问题。 优点:Acitivity的进程,当处理 Intent的时候,会产生一个对应的 Service Android的进程处理器现在会尽可能的不 kill掉你 非常容易使用 日历中 IntentService的应用  什么时候使用 Service? 比如播放多媒体的时候用户启动了其他 Activity这个时候程序要在后台继续播放,比如检测 SD卡上文件的变化,再或者在后台记 录你地理信息位置的改变等等,总之服务嘛,总是藏 在后头的。  请描述一下 Intent 和 Intent Filter。 Intent在 Android中被翻译为"意图",熟语来讲就是目的,他们是三种应用程序基本组件 —activity,service和 broadcast receiver之间互相激活的手段。 在调用 Intent名称时使用 ComponentName也就是类的全名时为显示调用。这种方式一般用于应用程序的内部调用, 因为你不一定会知道别人写的类的全名。我们来看看隐式 Intent怎么用? 首先我们先配置 我们的 Activity的 Intent Filter 这样在调用的时候指定 Intent的 action,系统就是自动的去对比是哪个 intent-filter符合我 们的 Activity,找到后就会启动 Activity。 一个 intent filter是 IntentFilter类的实例, 但是它一般不出现在代码中,而是出现在 android Manifest文件中, 以的形式. (有一个例外是 broadcast receiver的 intent filter 是使用 Context.registerReceiver()来动态设定的, 其 intent filter也是在代码中创建的.) 一个 filter有 action, data, category等字段. 一个隐式 intent为了能被某个 intent filter接受, 必须通过 3个测试. 一个 intent为了被某个组件接受, 则必须通过它所有的 intent filter中 的一个.  Intent传递数据时,可以传递哪些类型数据? Intent间传送数据一般有两种常用的办法: 1.extra 2.data. extra可以用 Intent.putExtra放入数据。新启动的 Activity可用 Intent.getExtras取出来 Bundle, 然后用 Bundles.getLong, getInt, getBoolean, getString等函数来取放进入的值。 而 data则是传输 url。url可以是指我们熟悉的 http, ftp 等网络地址, 也可以指 content 来指向 ContentProvider提供的资源。Intent.setData可以放入数据,Intent.getData可以取 出数据。  说说 Activity,Intent,Service是什么关系 。 一个 Activity通常是一个单独的屏幕,每一个 Activity都被实现为一个单独的类,这些类都 是从 Activity基类中继承来的,Activity类会显示由视图控件组成的用户接口,并对视图控 件的事件做出响应。 Intent的调用是用来进行架构屏幕之间的切换的。Intent是描述应用想要做什么。Intent数 据结构中两个最重要的部分是动作和动作对应的数据,一个动作对应一个动作数据。 Android Service是运行在后台的代码,不能与用户交互,可以运行在自己的进程,也可以 运行在其他应用程序进程的上下文里。需要通过某一个 Activity或者其他 Context对象来调 用。 Activity跳转到 Activity,Activity启动 Service,Service打开 Activity都需要 Intent表明跳转 的意图,以及传递参数,Intent是这些组件间信号传递的承载者。  请描述一下 Broadcast Receiver。 Broadcast Receiver用于接收并处理广播通知(broadcast announcements)。多数的广播是 系统发起的,如地域变换、电量不足、来电来信等。程序也可以播放一个广播。程序可以有 任意数量的 broadcast receivers来响应它觉得重要的通知。broadcast receiver可以通过多 种方式通知用户:启动 activity、使用 NotificationManager、开启背景灯、振动设备、播放 声音等,最典型的是在状态栏显示一个图标,这样用户就可以点它打开看通知内容。通常我 们的某个应用或系统本身在某些事件(电池电量不足、来电来短信)来临时会广播一个 Intent 出去,我们可以利用注册一个 Broadcast Receiver来监听到这些 Intent并获取 Intent中的 数据。  在 manifest和代码中如何注册和使 用 broadcast receiver 。 1)在 AndroidManifest.xml中注册 2)在代码中注册 1. IntentFilter filter = new IntentFilter("com.forrest.action.mybroadcast"); // 和广播 中 Intent的 action对应 2. MyBroadcastReceiver br = new MyBroadcastReceiver(); 3. registerReceiver(new MyBroadcastReceiver(), filter);  请介绍下 ContentProvider是如何实现数据共享的。 ContentProvider是通过提供 Uri来实现数据共享  请介绍下 Android的数据存储方式。 Android提供了 5种方式存储数据: 使用 SharedPreferences存储数据; 文件存储数据; SQLite数据库存储数据; 使用 ContentProvider存储数据; 网络存储数据;  为什么要用 ContentProvider?它和 sql的实现上有什么差别? 使用 ContentProvider可以将数据共享给其他应用,让除本应用之外的应用也可以访问本应 用的数据。它的底层是用 SQLite数据库实现的,所以其对数据做的各种操作都是以 Sql实 现,只是在上层提供的是 Uri。  请介绍下 Android中常用的五种布局。 最常用的布局方式为 LinearLayout、RelativeLayout、FrameLayout、TableLayout AbsoluteLayout。其中 LinearLayout和 RelativeLayout是最常用的方式,他们可以通过在 xml 配置文件或者代码中进行布局。 FrameLayout 最简单的布局方式,放置的控件都只能罗列到左上角,控件会有重叠,不能 进行复杂的布局。 LinearLayou可以通过 orientation属性设置线性排列的方向是垂直(vertical)还是纵向 (horizontal).每行或每列只有一个元素,可以进行复杂的布局。 AbsoluteLayout 可以让子元素指定准确的 x/y坐标值,并显示在屏幕上。AbsoluteLayout 没 有页边框,允许元素之间互相重叠(尽管不推荐)。他是绝对坐标,所以在实际中不提倡使 用。 RelativeLayout 允许子元素指定他们相对于其它元素或父元素的位置(通过 ID 指定)。因 此,你可以以右对齐,或上下,或置于屏幕中央的形式来排列两个元素。元素按顺序排列, 因此如果第一个元素在屏幕的中央,那么相对于这个元素的其它元素将以屏幕中央的相对位 置来排列。这个是相对于 AbsoluteLayout 的,采用的相对坐标,所以在实际中比较常用。 TableLayout 将子元素的位置分配到行或列中。一个TableLayout 由许多的 TableRow 组成, 每个 TableRow 都会定义一个 row 。TableLayout 容器不会显示 row 、column或 cell 的 边框线。每个 row 拥有 0个或多个的 cell ;和 html中的 table差不多。在实际中也经常使 用。 有的时候我们也会用到 GridView,就像我们手机屏幕上摆放的各个图标应该就是用 GridView排版的。 Padding是文字相对于边框,而 Margin是边框相对于父窗体。  谈谈 UI中, Padding和Margin有什么区别? Padding是文字相对于边框,而 Margin是边框相对于父窗体。  widget相对位置的完成在 antivity的哪个生命周期阶段实现。  请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系。  AIDL的全称是什么?如何工作?能处理哪些类型的数据? AIDL是一种接口定义语言,用于约束两个进程间的通信规则,供编译器生成代码,实现 Android设备上的进程间通信。 进程之间的通信信息首先会被转换成 AIDL 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 消息,然后发送给对方,对方受到 AIDL协 议消息后再转换成相应的对象。 AIDL支持的类型包括 Java基础类型和 String,List,Map,CharSequence,如果使用自定 义类型,必须实现 Parcelable接口。  请解释下 Android程序运行时权限与文件系统权限的区别。 运行时 Dalvik( android授权) 文件系统 linux 内核授权  系统上安装了多种浏览器,能否指定某浏览器访问指定页面? 在 action 赋值为”android.intent.action.VIEW“  时可接收如下 scheme 为"http" 等等类型的 data 。所以突发奇想,启动该程序后,指定 action 及 Uri ,即访问指定网页。  对多线程的运用和理解,及多线程之间 handle的传值。  对 android虚拟机的理解,包括内存管理机制垃圾回收机制。  Framework工作方式及原理,Activity是如何生成一个 view的,机制是什么。  android本身的一些限制,比如 apk包大小限制,读取大文件时的时间限。  如何加载的音乐信息,如何改善其效率。 Android系统提供了 MediaScanner,MediaProvider,MediaStore等接口,并且提供了一套 数据库表格,通过 Content Provider的方式提供给用户。当手机开机或者有 SD卡插拔等事 件发生时,系统将会自动扫描 SD卡和手机内存上的媒体文件,如 audio,video,图片等, 将相应的信息放到定义好的数据库表格中。 改善效率可以从界面需要查询必备数据,不需要的不进行查询。  ListView如何提高其效率? 使用分页加载,不要一次性加载所有数据。  启动应用后,改变系统语言,应用的语言会改变么? 不会  启动一个程序,可以主界面点击图标进入,也可以从一个程序中跳转过去,二者有什么 区别? 从主界面启动一个应用程序是通过快捷方式直接调用mainActivity启动的,从其他应用程序 调用需要隐式的通过 Action或者在 Intent中需要使用 setClass(),且要写明包路径。  Android程序与 Java程序的区别? android程序是 Java编写的,但程序使用的 android开发的 API,就是 andriod的库。  Android中 Task任务栈的分配。  在 Android中,怎么节省内存的使用,怎么主动回收内存?  不同工程中的方法是否可以相互调用?  在 Android中是如何实现判断区分通话记录中的电话状态,去电,来电、未接来电?  dvm的进程和 Linux的进程, 应用程序的进程是否为同一个概念 DVM指 dalivk的虚拟机.每一个 Android应用程序都在它自己的进程中运行,都拥有一个独立 的 Dalvik虚拟机实例.而每一个 DVM都是在 Linux中的一个进程,所以说可以认为是同一个 概念.  sim卡的 EF 文件有何作用 SIM卡的文件系统有自己规范,主要是为了和手机通讯,SIM卡本身可以有自己的操作系 统,EF就是作存储并和手机通讯用的。  如何判断是否有 SD卡? 在程序中访问 SDCard,你需要申请访问 SDCard的权限。 在 AndroidManifest.xml中加入访问 SDCard的权限如下: Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) Environment.getExternalStorageState()方法用于获取 SDCard的状态,如果手机装有 SDCard,并且可以进行读写,那么方法返回的状态等于 Environment.MEDIA_MOUNTED。  嵌入式操作系统内存管理有哪几种, 各有何特性。  什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?  一条最长的短信息约占多少 byte?  Linux中跨进程通信的几种方式 。  谈谈对 Android NDK的理解。 Android NDK是一套工具,允许 Android应用开发者嵌入从 C、C++源代码文件编译来的本 地机器代码到各自的应用软件包中。  谈谈 Android的优点和不足之处。  Android系统中 GC什么情况下会出现内存泄露呢? 出现情况: 1. 数据库的 cursor没有关闭 2.构造 adapter时,没有使用缓存 contentview 衍生 listview的优化问题-----减少创建 view的对象,充分使用 contentview,可以使用一静 态类来优化处理 getview的过程/ 3.Bitmap对象不使用时采用 recycle()释放内存 4.activity中的对象的生命周期大于 activity 调试方法: DDMS==> HEAPSZIE==>dataobject==>[Total Size]  Android UI中的 View如何刷新。 一般只是希望在 View发生改变时对 UI进行重绘。你只需在 Activity中显式地调用 View对 象中的 invalidate()方法即可。系统会自动调用 View的 onDraw()方法。  简单描述下 Android 数字签名。  什么是 ANR 如何避免它?  android中的动画有哪几类,它们的特点和区别是什么? 两种,一种是 Tween动画、还有一种是 Frame动画。Tween动画,这种实现方式可以使视 图组件移动、放大、缩小以及产生透明度的变化;另一种 Frame动画,传统的动画方法, 通过顺序的播放排列好的图片来实现,类似电影。  handler机制的原理。 Andriod提供了 Handler和 Looper来满足线程间的通信.Handler先进先出原则.Looper类用 来管理特定线程内对象之间的消息交换(Message Exchange). 1)Looper: 一个线程可以产生一个 Looper对象,由它来管理此线程里的 Message Queue(消息队列). 2)Handler:你可以构造 Handler对象来与 Looper沟通,以便 push新消息到 Message Queue里;或者接收 Looper从 Message Queue取出)所送来的消息. android中线程与线程,进程与进程之间如何通信。 线程通信使用 Handler,  说说 mvc模式的原理,它在 android中的运用。 MVC(Model_view_contraller)”模型_视图_控制器”。 MVC应用程序总是由这三个部分组成。 Event(事件)导致 Controller改变 Model或 View,或者同时改变两者。只要 Controller改变 了 Models的数据或者属性,所有依赖的 View都会自动更新。类似的,只要 Contro Android中各种界面的监听操作就是 MVC的应用。  android中有哪几种解析 xml的类,官方推荐哪种?以及它们的原理和区别。 DOM解析 优点: XML树在内存中完整存储,因此可以直接修改其数据和结构。 2.可以通过该解析器随时 访问 XML树中的任何一个节点。 3.DOM解析器的 API在使用上也相对比较简单。 缺点: 如果 XML文档体积比较大时,将文档读入内存是非常消耗系统资源的。 使用场景: DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准。DOM 是以层次 结构组织的节点的集合。这个层次结构允许开发人员在树中寻找特定信息。 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 该结构 通常需要加载整个文档和构造层次结构,然后才能进行任何工作。DOM是基于对象层次 结构的。 SAX解析 优点: SAX 对内存的要求比较低,因为它让开发人员自己来决定所要处理的标签。特别是当开 发人员只需要处理文档中所包含的部分数据时,SAX 这种扩展能力得到了更好的体现。 缺点: 用 SAX方式进行 XML解析时,需要顺序执行,所以很难访问到同一文档中的不同数据。 此外,在基于该方式的解析编码过程也相对复杂。 使用场景: 对于含有数据量十分巨大,而又不用对文档的所有数据进行遍历或者分析的时候,使用 该方法十分有效。该方法不用将整个文档读入内存,而只需读取到程序所需的文档标签 处即可。 Xmlpull解析 android SDK提供了 xmlpull api,xmlpull和 sax类似,是基于流(stream)操作文件, 然后根据节点事件回调开发者编写的处理程序。因为是基于流的处理,因此 xmlpull和 sax都比较节约内存资源,不会象 dom那样要把所有节点以对橡树的形式展现在内存中。 xmlpull比 sax更简明,而且不需要扫描完整个流。  DDMS与 TraceView的区别? Traceview是 android平台配备一个很好的性能分析的工具。它可以通过图形化的方式让我 们了解我们要跟踪的程序的性能,并且能具体到method。 http://wbdban.iteye.com/blog/564309 DDMS为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、  res 目录 工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录 有默认几项 resource。 6项,drawable-hdpi,drawable-ldpi,drawable-mdpi,layout,values。  android的哪个版本是一次重大的升级? 1、6版本。 系统新功能 快速搜索框(全局搜索) 新的摄像机和照相机 电池用量指示 Android Market(菜场)升级 新平台的新技术 Android 1.6 升级 Linux内核从 2.6.27 到 2.6.29. NotifactionManager使用原理 1. 通过 getSystemService方法获得一个 NotificationManager对象。 2. 创建一个 Notification对象。每一个 Notification对应一个 Notification对象。在这 一步需要设置显示在屏幕上方状态栏的通知消息、通知消息前方的图像资源 ID和发出通知 的时间。一般为当前时间。 3. 由于 Notification可以与应用程序脱离。也就是说,即使应用程序被关闭, Notification仍然会显示在状态栏 中。当应用程序再次启动后,又可以重新控制这些 Notification。如清除或替换它们。因此,需要创建一个 PendingIntent对象。该对象由 Android 系统负责维护,因此,在应用程序关闭后,该对象仍然不会被释放。 4. 使用 Notification类的 setLatestEventInfo方法设置 Notification的详细信息。 5. 使用 NotificationManager类的 notify方法显示 Notification消息。在这一步需要指 定标识 Notification的唯一 ID。这个 ID必须相对于同一个 NotificationManager对象是唯一 的,否则就会覆盖相同 ID的 Notificaiton。
本文档为【android面试题和答案】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_668208
暂无简介~
格式:pdf
大小:319KB
软件:PDF阅读器
页数:10
分类:互联网
上传时间:2012-04-10
浏览量:25