版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国开期末考试《移动应用开发》机考试题及答案一、单项选择题(每题2分,共20分)1.在AndroidStudio中,新建项目时默认生成的Activity继承自哪一类?A.ActivityB.AppCompatActivityC.FragmentActivityD.ActionBarActivity答案:B2.下列哪一项不是Android四大组件之一?A.ServiceB.BroadcastReceiverC.ContentProviderD.Handler答案:D3.在AndroidManifest.xml中注册广播接收者时,必须使用的标签是:A.<receiver>B.<broadcast>C.<intent>D.<service>答案:A4.使用SharedPreferences存储数据时,默认的文件扩展名是:A..dbB..xmlC..txtD.无扩展名答案:D5.在JetpackCompose中,用于声明式UI的根可组合函数注解是:A.@ComposableB.@PreviewC.@UiComposableD.@Component答案:A6.下列关于RecyclerView的说法正确的是:A.必须继承ListViewB.必须使用LinearLayoutManagerC.通过LayoutManager控制布局方向D.不支持局部刷新答案:C7.在Kotlin中,下列哪个关键字用于延迟初始化变量?A.valB.varC.lateinitD.lazy答案:C8.在Android中,使用Room持久化库时,用于标记实体类的主键注解是:A.@PrimaryKeyB.@EntityC.@ColumnInfoD.@Dao答案:A9.在Flutter中,StatelessWidget与StatefulWidget最核心的区别是:A.是否支持动画B.是否持有状态C.是否支持路由D.是否支持平台通道答案:B10.在iOS开发中,使用SwiftUI构建界面时,用于垂直排列视图的结构体是:A.HStackB.ZStackC.VStackD.Group答案:C二、多项选择题(每题3分,共15分)11.下列哪些属于AndroidJetpack架构组件?A.ViewModelB.LiveDataC.RetrofitD.Room答案:A、B、D12.关于Flutter的热重载(HotReload)机制,下列说法正确的是:A.可以保留应用程序状态B.会重新执行main()函数C.支持Dart代码修改后立即生效D.可以更新原生Android代码答案:A、C13.在Android中,下列哪些方式可以实现跨进程通信?A.AIDLB.MessengerC.BroadcastReceiverD.ContentProvider答案:A、B、D14.关于SwiftUI的@State属性包装器,下列说法正确的是:A.用于声明私有状态B.触发视图自动更新C.可用于跨视图共享状态D.值类型必须为引用类型答案:A、B15.在移动应用性能优化中,下列哪些手段可以有效减少内存抖动?A.使用对象池复用BitmapB.避免在onDraw()中创建对象C.使用RecyclerView替代ListViewD.使用LargeHeap=true答案:A、B、C三、判断题(每题1分,共10分)16.Android中,Service默认运行在子线程中。答案:错误17.Flutter的Widget树与Element树一一对应。答案:正确18.在SwiftUI中,@ObservedObject只能用于值类型。答案:错误19.Room数据库的查询方法可以返回LiveData类型。答案:正确20.Android12开始,所有应用必须使用ScopedStorage访问共享存储。答案:正确21.Flutter的PlatformChannel支持双向通信。答案:正确22.Kotlin协程的launch函数会阻塞当前线程。答案:错误23.iOS的AutoLayout只能通过Storyboard设置。答案:错误24.Android中,WebView的JavaScript默认处于开启状态。答案:错误25.使用ProGuard可以有效减小APK体积。答案:正确四、填空题(每空2分,共20分)26.Android中,使用________方法可以获取应用的Context对象在任何位置。答案:getApplicationContext()27.在Flutter中,________函数是应用程序的入口。答案:main()28.SwiftUI中,使用________修饰符可以设置视图的背景色。答案:.background()29.Room数据库使用________注解标识数据库视图。答案:@DatabaseView30.Android中,________类用于处理异步消息,常与Handler配合使用。答案:Looper31.在Kotlin中,________关键字用于定义单例对象。答案:object32.iOS中,使用________协议实现UITableView的数据源方法。答案:UITableViewDataSource33.Flutter中,________命令用于生成发布版APK。答案:flutterbuildapk34.Android中,________文件用于声明权限、组件等配置信息。答案:AndroidManifest.xml35.在JetpackCompose中,________函数用于显示一个可滚动的列表。答案:LazyColumn五、简答题(每题10分,共20分)36.简述Android中ViewModel与onSaveInstanceState的区别,并给出各自适用场景。答案:ViewModel是架构组件之一,生命周期长于Activity,因配置更改而重建时依旧存活,适合存储与UI相关的大量数据或异步结果,如网络请求返回的列表。onSaveInstanceState是Activity的方法,仅在系统因资源紧张杀死进程前被调用,保存的数据需实现Parcelable或Serializable,适合存储少量轻量级状态,如当前滚动位置、输入框文本。ViewModel可支撑旋转屏幕等配置更改,onSaveInstanceState用于低内存杀死后的状态恢复,两者可配合使用,实现健壮的状态管理。37.说明Flutter中Widget、Element、RenderObject三者的关系,并解释为什么需要分离。答案:Widget是immutable的配置描述,轻量且可频繁重建,开发者通过组合Widget声明UI。Element是Widget在树中的可变实例,持有Widget引用并管理生命周期,负责对比新旧Widget生成更新指令。RenderObject负责布局、绘制与命中测试,持有真正的渲染数据,数量远少于Widget,避免重复创建。分离原因:1.配置与表现解耦,Widget重建成本低;2.Element实现增量更新,提升性能;3.RenderObject复用减少内存与GPU负担;4.支持跨平台统一渲染管线,保证一致性。三者协作实现“声明式UI+高性能渲染”目标。六、编程题(共35分)38.(15分)完成Kotlin代码,实现Room数据库版本升级时自动迁移,要求:实体类User新增字段age:Int,数据库版本从1升至2,提供Migration对象并展示插入与查询语句。答案:```kotlin//Entity@Entity(tableName="user")dataclassUser(@PrimaryKey(autoGenerate=true)valid:Int=0,valname:String,valage:Int//新增字段)//Database@Database(entities=[User::class],version=2)abstractclassAppDatabase:RoomDatabase(){abstractfunuserDao():UserDaocompanionobject{valMIGRATION_1_2=object:Migration(1,2){overridefunmigrate(db:SupportSQLiteDatabase){db.execSQL("ALTERTABLEuserADDCOLUMNageINTEGERNOTNULLDEFAULT0")}}funbuild(context:Context):AppDatabase=Room.databaseBuilder(context,AppDatabase::class.java,"app.db").addMigrations(MIGRATION_1_2).build()}}//DAO@DaointerfaceUserDao{@Insertfuninsert(user:User)@Query("SELECTFROMuser")fungetAll():List<User>}//使用示例valdb=AppDatabase.build(context)db.userDao().insert(User(name="Alice",age=22))vallist=db.userDao().getAll()```39.(20分)使用JetpackCompose实现一个倒计时器,要求:1.支持输入秒数并开始倒计时;2.倒计时期间显示剩余秒数与圆形进度条;3.倒计时结束弹出Toast提示;4.横屏或配置更改后状态不丢失。答案:```kotlinclassMainActivity:ComponentActivity(){overridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setContent{TimerScreen()}}}classTimerViewModel:ViewModel(){vartotalbymutableStateOf(60)varremainbymutableStateOf(0)varrunningbymutableStateOf(false)privatevarjob:Job?=nullfunstart(context:Context){if(running)returnrunning=trueremain=totaljob=viewModelScope.launch{while(remain>0){delay(1000)remain--}running=falseToast.makeText(context,"倒计时结束",Toast.LENGTH_SHORT).show()}}funstop(){job?.cancel()running=false}}@ComposablefunTimerScreen(timerViewModel:TimerViewModel=viewModel()){valcontext=LocalContext.currentColumn(modifier=Modifier.fillMaxSize().padding(32.dp),horizontalAlignment=Alignment.CenterHorizontally,verticalArrangement=Arrangement.Center){OutlinedTextField(value=timerViewModel.total.toString(),onValueChange={timerViewModel.total=it.toIntOrNull()?:0},label={Text("输入秒数")},enabled=!timerViewModel.running,keyboardOptions=KeyboardOptions(keyboardType=KeyboardType.Number))Spacer(Modifier.height(24.dp))Box(contentAlignment=Alignment.Center){CircularProgressIndicator(progress=if(timerViewModel.total==0)0felse(timerViewModel.total-timerViewModel.remain)/timerViewModel.total.toFloat(),modifier=Modifier.size(200.dp),strokeWidth=12.dp)Text(text=timerViewModel.remain.toString(),style=MaterialTheme.typography.h3)}Spacer(Modifier.height(24.dp))Row(horizontalArrangement=Arrangement.spacedBy(16.dp)){Button(onClick={timerViewModel.start(context)}){Text("开始")}Button(onClick={timerViewModel.stop()}){Text("停止")}}}}```七、综合设计题(共30分)40.设计一个“跨平台日记本”最小可行产品(MVP),要求:1.支持iOS与Android双端;2.离线优先,数据本地加密存储;3.支持文字、图片、语音三种内容;4.提供按日期检索与全文搜索;5.给出技术选型、架构图、关键类说明、数据流图、安全策略。答案:技术选型:Flutter+Dart,插件:sqflite加密版、record、image_picker、flutter_sound。架构:CleanArchitecture+BLoC。架构图:Presentation→Domain←DataPresentation:Pages、Widgets、BLoCDomain:Entities、UseCases、Repositories接口Data:Repositories实现、DTO、Mappers、Local数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自动扶梯维保方案精
- 外架施工方案春和钱塘最终版模板
- 直播间用户互动体验优化实施方案
- 大学生村官学习工作总结
- 大学生网购小商品行为调研报告
- 2026年经济数据分析与应用题集
- 2026年医疗救助对象认定标准与一站式结算操作测试题
- 2026年笔试实战烟草公司应聘全攻略
- 2026年政务服务外包项目管理与考核规范手册
- 2026年新媒体运营推广技巧解析
- 分级诊疗下的医疗成本效益分析路径
- 2025年10月自考15041毛中特试题及答案
- 临床护理带教风险防范
- 静脉输液治疗规范与并发症预防
- 皖北卫生职业学院单招职业适应性测试题库及答案解析
- 2025年智能穿戴设备数据采集合同
- 2025至2030中国牛肉行业运营态势与投资前景调查研究报告
- 2026年合肥信息技术职业学院单招职业技能测试题库及答案1套
- 项目部全员安全生产责任制
- 医院进修费用报告
- 《数字图像与视频处理》课件-第8章 数字水印技术
评论
0/150
提交评论