《腾讯 2022年移动客户端开发面试题(应聘 求职 面试准备资料).docx》由会员分享,可在线阅读,更多相关《腾讯 2022年移动客户端开发面试题(应聘 求职 面试准备资料).docx(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、腾讯2022年移动客户端开发面试题第1题:一、不定项选择(iOS开发选做)实现多线程都有哪几种方法?A 使用synchronized(self)B使用GCDC 使用 NSOperationQueueD 使用thread答案:ABC第2题:Intent传递数据时,以下的数据类型哪些可以被传递A SerializableB charsequenceC ParcelableD Bundle第13题:iOS中导航设计模式有几种?A平铺导航B标签导航C树形导航D模态视图导航答案:ABC解析:我们常常会遇到在某个路径中滑出一个单屏、进行编辑、查看信息、 操作界面的上的内容的状况发生。这是一种应用行为的特定
2、形态,一 般带有流程的界面变更的状况发生,比方一张页面临时取代了整个应 用程序的显示屏,我们称这种处理方式为“模态视图。默认状况下, 模式视图从屏幕底部边缘滑上来切一半掩盖了当前整个屏幕,模态视 图完成和程序主功能有关系的*任务,尤其适合于主功能界面中欠缺 的多级子任务。这种操作会临时绕开应用的正常操作。模态视图经常被用来编辑或添加内容,当你需要的时候模态视图一 般从屏幕底部滑出而后遮盖从前的页面,当你完成任务后滑出的页面 也会相应的缩回去,然后可以连续之前的流程。有些控件和界面元素 只在次要任务中被间或用到,模态视图很好的把他们临时隐蔽了,并-10 且当需要的时候消失,有效的节省了屏幕空间。
3、模态视图有点像是导航中的死胡同,为了能够让用户也可以同样便 利的回到正常的流程中去,模态视图除了正常的操作之外一般还有加 上一个完成按钮,或者“取消按钮。第14题:为什么说 Object-C 是 runtime language?A将数据类型确实定由编译时,推迟到了运行时B运行时机制使我们直到运行时才去打算一个对象的类别,以及调 用该类别对象指定方法。C驾驶A继承了 B类,那么在编译时就已经生成了A的实例D多态是指不同对象以自己的方式响应相同的消息的力量答案:A B D第15题:android通过startService的方式开启服务,关于service生命周期的 onCreate。和onSt
4、art()说法正确的选项是哪两项11 A当第一次启动的时候先后调用onCreate()和onStart()方法B当第一次启动的时候只会调用onCreate()方法C假如service已经启动,将先后调用onCreate()和onStart()方法D假如service已经启动,只会执行onStart。方法,不在执行onCreate。方法答案:AD解析:1. startService。的目的是回调onStart。方法,onCreate。方法是在 Service不存在的时候调用的,假如Service存在(例如之前调用了 bindService,那么 Service 的 onCreate 方法 已经调
5、用了)那么 startService。将跳过 onCreate()方法。2. bindService()目的是回调onBind。方法,它的作用是在Service和 调用者之间建立一个桥梁,并不负责更多的工作(例如一个Service 需要连接服务器的操作),一般使用bindService来绑定到一个现有的 Service (即通过StartService启动的服务)。由于Service 的onStart。方法只有在StartService。启动Service的状 况下才调用,故使用。nStart()的时候要留意这点。第16题:-12 -二、问答题Android中Looper的实现原理,为什么调用
6、Looper.prepare。就在 当前线程关联了一个Looper对象,它是如何实现的。1、线程间通信机制首先,looper、handler、messagequeue 三者共同实现了 android 系 统里线程间通信机制。如在A、B两个子线程之间需要传递消息,首 先给每个子线程绑定一套handler、looper、messagequeue机制,然 后这三个对象都与其所属线程对应。然后A线程通过调用B线程的 Handler对象,发送消息。这个消息会被Handler发送到B线程的 messagequeue中,而属于B线程的Looper对象始终在for循环里无 限遍历MessageQueue, 一
7、旦觉察该消息队列里收到了新的消息,就 会去对消息进行处理,处理过程中会回调自身Handler的 heandleMessage方法。从而实现了不同线程间通信。2、Looper实现原理Looper类里包含一个消息队列对象和一个线程对象。当创立Looper 时,会自动创立一个消息队列,同时将内部线程对象指向创立Looper 的线程。当开启Looper后(looper.loop。),会自动进入无限for循环中, 不断去遍历消息队列,假如没有消息那么堵塞,有消息那么回调handler 的handlemessage方法进行处理。3、Looper.prepare()-13 -首先,要使用Looper机制一般
8、会在当前线程中创立Handler对象, 里面会自动创立一个looper对象和消息队列,这里面的消息队列属于 当前线程空间。但此时的looper还不会去遍历,也没有绑定到当前线 程。其中,looper对象内部也包含一个空消息队列对象和空线程。通 过Looper.prepare()方法,先让该消息队列指向当前线程的消息队列, 让空线程也指向当前线程。从而实现了绑定。第17题:简述Andriod如何处理UI与耗时操作的通信,有哪些方式及各自的 优缺点。1、启动worker线程进行耗时操作,通过Handler机制实现线程间 通信。2、AsyncTask 处理3、启用 Service 和 broadca
9、st 广播4、runOnUiThread()5、post()第18题:用Object-C定义并实现一个基于数组的循环队列类,当队列放满需 支持动态的扩展队列长度。-14 -15-答案:ABCD解析:Serializable :将Java对象序列化为二进制文件的 Java序列化技 术是Java系列技术中一个较为重要的技术点,在大局部状况下,开 发人员只需要了解被序列化的类需要实现 Serializable接口,使用 Objectinputstream 和 ObjectOutputStream 进行对象的读写。charsequence:在JDK1.4中,引入了 CharSequence接口,实现了
10、这个接口的类有: CharBuffer String、StringBuffer StringBuilder 这个四个类。CharBuffer为nio里面用的一个类,String实现这个接口理所当然, StringBuffer 也是一个 CharSequence, StringBuilder 是 Java 抄袭 C#的 一个类,基本和StringBuffer类一样,效率高,但是不保证线程平安, 在不需要多线程的环境下可以考虑。供应这么一个接口,有些处理String或者StringBuffer的类就不用 重载了。但是这个接口供应的方法有限,只有下面几个:charatlength subSequen
11、ce、toString这几个方法,感觉假如有必要,还是重载的比 较好,避开用instaneof这个操作符。Parcelable:android供应了一种新的类型:Parcelo本类被用作封装数据的容器, 封装后的数据可以通过Intent或IPC传递。除了基本类型以外,只有实现了 Parcelable接口的类才能被放入Parcel中。是GOOGLE在安卓中实现的另一种序列化,功能和Serializable相像, 主要是序列化的方式不同Bundle:Bundle是将数据传递到另一个上下文中或保存或回复你自 己状态的数据存储方式。它的数据不是长久化状态。第3题:在android中使用Menu时可能需
12、要重写的方法有?A onCreateOptionsMenu()B onCreateMenu()C onOptionsltemSelected()D onltemSelected()答案:AC解析:android中有三种菜单(1)选项菜单Options menus :一个Activity只能有一个选项菜单, 在按下Menu键时,显示在屏幕下方。(2)上下文菜单Context menus :为Activity中的任何一个视图注册 一个上下文菜单,“长按消失。(3)弹出式菜单Popup menus :依靠于Activity中的某个一个视图。-3-第4题:android中使用SQLiteOpenHel
13、per这个帮助类时,可以生成一个数 据库,并可以对数据库版本进行管理的方法可以是?A getWriteableDatabasef)B getReadableDatabase()C getDatabase()D getAbleDatabase()答案:A B第5题:android关于service生命周期的onCreate。和onStart()说法正确的 是?A当第一次启动的时候先后调用onCreate。和onStart。方法B当第一次启动的口寸候只会调用onCreate()方法C假如service已经启动,将先后调用onCreate。和onStart()方法D假如service已经启动,只会执
14、行onStart。方法,不在执行onCreate。方法答案:AD解析:当第一次启动的时候先后调用onCreate()和onStart。方法, 假如service已经启动,再次启动的话只会执行onStart()方法,不在 执行onCreate。方法 。第6题:下面是属于GLSurFaceView特性的是?A管理一个surface,这个surface就是一块特别的内存,能直接排 版到android的视图view上。B管理一个EGL display,它能让opengl把内容渲染到上述的surface 上。C让渲染器在*的线程里运作,和UI线程分别。D可以直接从内存或者DMA等硬件接口取得图像数据答案
15、:ABC解析:GLSurfaceView 是一个视图,继承至 SurfaceView,它内嵌的 surface 特地负责OpenGL渲染。GLSurfaceView供应了以下特性:1管理一个surface,这个surface就是一块特别的内存,能直接排版到android的视图view上。2管理一个EGL display,它能让opengl把内容渲染到上述的 surface 上。3 用户自定义渲染器(render)。4 让渲染器在*的线程里运作,和UI线程分别。5 支持按需渲染(on-demand)和连续渲染(continuous)。6 一些可选工具,如调试。第7题:模态视图专用属性有哪些?A
16、UlModalPresentationFullScreen,全屏状态,是默认呈现样式, iPhone只能全屏呈现。B UlModalPresentationPageSheet,它的宽度是固定的 768 点,在 iPad 竖屏状况下那么全屏呈现。C UlModalPresentationFormSheet,它的是固定的 540x620 点,无论 是横屏还是竖屏状况下呈现尺寸都不会变化。D UlModalPresentationCurrentContext,它与父视图掌握器有相同的呈现方式。-6-答案:ABCD第8题:NSAssert类似的宏有哪些?A NSAssertlB NSAssert2C
17、NSAssert3D NSAssert4答案:ABCD解析:#define NSAssert(condition, desc,.)#define NSAssert5(condition, desc, argl, arg2, arg3, arg4, arg5)NSAssert(condition), (desc), (argl), (arg2), (arg3),(arg4), (arg5)第9题:AddressBookUI框架中的视图掌握器?-7 A ABPeoplePickerNavigationControllerB ABPersonViewControllerC ABNewPersonVi
18、ewControllerD ABUnknownPersonViewController答案:ABCD解析:视图掌握器包括UlViewController第第题:创立联系人使用的函数有哪些?A ABPersonCreateB ABRecordSetValueC ABMultiValueCreateMutableD ABAddressBookSave答案:ABCD8修改联系人使用的函数有哪些?A ABPersonCreateB ABRecordSetValueC ABAddressBookGetPersonWithRecordIDD ABAddressBookAddRecord答案:C D第12题:表视图的相关类有哪些?A UlTableViewB UlTableViewControllerC UlTableViewDelegateD UlTableViewDataSource答案:AB解析:AB是类CD是代理方法9