文档库 最新最全的文档下载
当前位置:文档库 › 百度腾讯android面试题

百度腾讯android面试题

百度腾讯android面试题
百度腾讯android面试题

腾讯面试题

1.int a = 1;

int result = a+++3<<2;

2.int a = 2;

int result = (a++ > 2)?(++a):(a+=3);

3.int a = 1234567;

int b = 0x06;

int result = a&b;

4.Integer a = 34556;

Integer b = 34556;

boolean result = a==b;

5.String func(string s ){

return s.length() > 0 ? func(s.subString(1))+ s.charAt(0):"";

}

String result = func("Tencent");

6.byte result = (byte) oxffeffefe;

7.int result = [(oxfe2baf&oxf)|oxff] >> 2/(4<<1);

8.判断两个String的交集

比如 A = "Marginle",B = Valaienie", 交集为aie,写个算法。

9.什么是状态机?项目中什么时候用到状态机,举例说明。

10.写出两种单例模式

Android基础

1.Activity和BroadCast Receiver的生命周期

2.写出几种service和Activity的交互方式

3.UI线程和非UI线程的交互方式,写出几种各自的耗时。

4.requestLayout, invalidate和postInvalidate的异同

5.写出三种常用layout布局并进行解释

6.http怎么加入超时和代理

7.view的绘制过程,讲讲draw/onDraw和drawChild这个可以口述。

8.以下是Android sdk的英文文档请细读。

9.100盏灯,全部关闭,第一人全部打开(亮),第二个人隔一个按开关,第三个人隔2个按开关,以此类推,第100人路过时有几盏灯亮着?(写出结果就行)

Java基础

1.说出sleet,wait,notify的区别

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

百度面试题

2013-5-2号补充:

1.View和ViewGroup的关系

2.如何定位和解决Andorid的内存溢出问题

3.一个有N个元素的一维数组(A[0],A[1], ..., A[n-1]),设计一个算法求解该数组最大子数组。(要求时间复杂度是O(n))

4.用Java代码实现判断一个字符串中是否包含另一个字符串,不要用jdk中String的indexOf方法。

5.用Java实现一个Singleton.

6.简述Observer设计模式,并画出Observer模式的典型结构类图

7.& 和&&的区别

8.什么是dpi,ps,sp?适配是如何做的,为什么?

9.用最有效率的方法算出2乘以8等于几?

10.静态成员类、非静态成员类有什么区别?什么是匿名内部类?

11.Handler机制的原理,内部是如何实现的,消息队列的实现机制?

12.什么是ANR,如何定位和避免?

13.APK之间互相传递数据

14.简述Android的启动过程

15.如何加载ndk库?如何在jni中注册native函数,有几种注册方法?

16.如何收集软件崩溃信息?

17.简述软件编译流程和发布流程

18.是否编译过android源码和linux内核源码

19.写一个归并排序数组

20.自定义控件相关

21.缓存实现

22.线程同步(生产者消费者)

23.符号匹配(栈)

24.还问了下拉刷新和分页加载的实现机制

-------------------------------------------------------

盘古搜索面试总结

算法题

2.求一个数组的最大连续子序列和,比如:-10,3,5,2,-3,6,7

最笨的方法就是穷举法,用三层for循环

3.求一个数组中出现次数最多且值最大的数

android的基础题

1.service的生命周期

2.Intent用途,了解多少?IntentService知道么?

3.自定义控件

4.xmpp协议的理解

5.广播创建方式有几种?有什么区别?

6.多线程有几种实现方式?

继承Thread, 实现Runnable接口,AsynTask

------------------------------------------------------------

一、listview如何优化(这个很重要,多次被问到)

1.分页加载

2.convertView缓存

3.viewHolder

4.scrollListener,记住滑动的状态

二、常用排序算法,各种算法的复杂度,用Java实现一种排序算法。

四、单链表的反转、合并、排序

五、二分查找法

六、Intent Flag常用的记住几个

七、AIDL怎么用?全称是什么?

八、taskAffinity 亲和性

这个一般人应该都不熟悉,了解一下,面试中可能被问到,几率不大。

--------------------------------------------------------------

百度各种面试总结

1.Listview item缓存如何实现

convertView

2.很多view如何缓存

3.图片上传

4.图片过大如何处理?压缩后图片有多大?

分辨率压缩、质量压缩

5.OOM怎么办?

6.图片的缓存机制,如何做到高效和稳定?

7.自定义view怎么做能提高效率? 自定义view如何做图片缓存?自定义view如何判断单击和双击?自定义view 的onDraw方法主要做什么?

避免重复调用measure 和layout

8.是否看过view的源码

9.动画的机制及其底层实现?

10.二叉树、链表

11.平时看什么书?去哪些论坛看?

12.问项目底层实现

13.Linux文件系统实现,如何实现文件的隐藏?

---------------------------------------------------------------------------------------------------------

面试算法题总结

1.有一个整数数组,有负数和整数,用一个方法把正负数分开,要求空间复杂度是O(1),时间复杂度是:O(N)(百度移动平台部)

2.有一个数列,奇数个,其中有3个是单个的,其它都是成对的,怎么找出其中任意一个单个的数(小米一面)

3.在一个数组中,找出出现次数最多且数值最大的一个数并输出

4.用最快的方式将两个数组合并到一个数组中?时间复杂度

=============================================================================== =============

2013-4-10补充:

问题:怎样的类可以作为HashMap的键?

答:这个问题是搜狗2012年的笔试题,我开始还真是没想太明白。刚才看到HashMap的时候才发现原来是这么回事。

当需要往ArrayList,HashMap中放东西时,像int,double这种内建类型是放不进去的,因为容器都是装object的,这就需要这些内建类型的外覆类了。比如:int对应的Integer,double对应的Double。

同样是搜狗的笔试题:适合频繁插入和查找的数据结构

答:频繁插入,链表效率高,频繁查找数组效率高,那么综合一下,我个人觉得是哈希表,或者说HashMap 等使用hash算法的数据结构。

1、对于简历上所写的每个问题,面试官感兴趣的会对我提问,并分析里边遇到的问题以及得到的经验。面试过程描述以前做过的项目。项目中你认为的难点是什么。

2、对于网络交互这块儿需要注意什么问题

3、android是一个什么样的系统。Jni调用机制是什么。用uml画一个在你的项目中使用的设计模式。

面试中常问的非技术类问题:

1.简单介绍一下你自己。

2.对自己做个评价,优点、缺点。

3.自己做过的项目,详细介绍一下。

4.实习经历,在实习过程中遇到哪些问题,如何解决的?

5.你对公司有什么问题要问吗(对公司有什么要了解的)?

技术类的问题主要就看对技术的掌握程度和自己的综合能力了。

百度移动终端研发工程师笔试题,题量不大,2个小时,有点难度。

1.写一个字符串逆序的程序,时间复杂度和空间复杂度最低,效率越高越好。

2.实质:二叉树的层序遍历,每层的结点用单链表输出。

3.1-N(N最大32000,且未知),内存只有4K,找出其中的重复数

4.编程题,比较复杂,是个系统设计题,与《编程之美》中3.2,电话号码对应英语单词类似。

百度软件开发工程师一面问题:

1.有101个数,为[1,100]之间的数,其中一个数是重复的,如何寻找这个重复的数,其时间复杂度和空间复杂度是多少?

2.Java中抽象类与接口的区别。

3.进程与线程之间的联系与区别。(多家公司都在问,好好研究一下)

4.谈谈对设计模式的认识与理解,简单介绍一下你所知道的设计模式。(多家公司都问,Android方向面试必考的)

5.线程、多线程相关(必问)

6.Linux常用的命令,shell编程,grep命令的使用。

7.海量数据查找或者排序,有资源限制要求。(常考的)

建议:简历中对自己的专业技能要实事求是的写,突出自己的重点,不宜托大,面试官面试时提问的依据就是简历上的内容。百度的工作环境很好,做技术的员工给人的感觉就是虽然人家的技术水平很高,但是都比较谦逊。百度确实是一个不错的互联网公司。

Sina无线客户端开发工程师面试

笔试的题目和7月22日实习生的题目差不多。面试主要问了:

1.二叉树的一些基础知识。

2.Java多线程,对stop()方法的认识,如何安全的终止一个线程。

3.设计模式相关的问题

4.谈谈你对面向对象编程中继承的认识

5.排序算法

网易2012校招无线客户端开发笔试,题目不太难,比较基础。

1.面向对象编程中多态的概念,用伪代码展示出来。

2.斐波那契数列编程,效率越高越好(详见《编程之美》2.9)

3.60W长度为32的字符串一次性读入内存中,大约占用多少内存空间?

4.一个X向量n,如何求其内部的最大距离。

5.在浏览器中输入https://www.wendangku.net/doc/671893996.html,,从输入到页面在浏览器中显示出来,期间发生了哪些过程,越详细越好。

6.简单介绍一下Android系统中的Activity,Service, Intent, ContentProvider组件。

7.编程解析一段josn格式内容,并在界面上显示出来。

8.英文阅读,考察英语能力。

9.网络应用分析,发挥自己的主观能动性和积累。

搜狗2012校招笔试

搜狗的题目出的很全,所有职位的题目都在一份卷子上,涉及到数据结构、网络、操作系统、算法、软件工程等多方面,根据自己所投递的职位,有针对性的选择要答的题目即可。

金山2012校园招聘笔试

为了保险,做了运维的题目,难度不大,主要是网络和Linux操作系统方面的,稍微准备一下即可。答题的时候自我感觉良好,结果没收到面试通知,被鄙视了,o(╯□╰)o

Android开发工程师面试中经常会问到的问题

1.Activity的生命周期(最基本的)。

2.Android基本框架结构。

3.Android终止一个进程的方法,如何彻底终止一个程序。

4.如何改写程序,改变android手机中返回键的功能(西安TCL研究院技术面试)。

一般来说,大公司的校园招聘中首先看的还是基础,有工作或者实习经验的会重点考虑,多问一些在实习中的项目细节,同时会问一些算法,建议认真研读《编程之美》《编程珠玑》之类的书籍。首先要做好充足的准备,打好基础,其次还要看一些算法、设计的内容,一面以后的技术面问的题目都有一定的挑战性。如果有实习或者项目经历,可以大大增加校招中简历筛选通过的机率。对于互联网公司,特别喜欢海量数据的排序、搜索,网上类似的资源很多,可以看看。技术更新永无止境,要时刻保持清醒的头脑,不断学习,充实自己,才能在竞争中不被淘汰,祝大家好运,找到心仪的工作。

=============================================================================== ==================================

1.程序之间亲和性的理解

eoe的一个朋友的回答,要不我还真想不到是什么。

是问affinity吧

sdk文档中有详细说明

看这篇文章:https://www.wendangku.net/doc/671893996.html,/song_shi_chao/article/details/8754300

2.Task任务栈的分配

https://www.wendangku.net/doc/671893996.html,/guomeijuan916/article/details/8121468

3.Activity如何启动一个service

这个问题开始真是小看了,个人觉得有两种:一种就是start一个service,另外一种就是bind一个service。

百度android

笔试题

java如何同步

wait 和sleep的区别

java常用的数据结构如何实现

重载与重写区别

android 如何提高稳定性

--------------------------------------------------------------

android 有哪些安全机制

1)https://www.wendangku.net/doc/671893996.html,/content/11/1219/23/3700464_173515364.shtml

2)https://www.wendangku.net/doc/671893996.html,/GnagWang/archive/2011/03/21/1990507.html

基于上面两篇文章,我也总结下:1.Android基于Linux,Linux的安全机制适用于Android,通过用户id,组id等实现;2.Android的权限机制:在manifest.xml中会配置相应的权限 3.Android的独立进程机制:每个应用都运行在独立的进程中,互相不干扰,当然他们共享资源和内存等;还有注意shareId如果相同会运行在一个进程中 4.签名机制:Android打包的时候有自己独立的keystore文件,所以这个文件是唯一的,保证应用的安全性

-------------------------------------------------------------

android 应用之间有几种共享数据的方法

android 哪些操作会导致内存泄露如何排查

.9.png 和png 的区别

sqlite 使用注意事项

Listview 中getview中convertview 的工作原理

service 有什么特征,在哪种情况下会用到service

面试

面试的时候会问你关于简历上的项目,会问得比较细,问你几个人做的,做了多长时间,画出原理图intent 如何开启activity的?

manifest 的作用

内存过低时,是用什么策略杀死进程@?

1. Intent的几种有关Activity启动的方式有哪些,你了解每个含义吗?

这里Android123提示大家,Intent的一些标记有FLAG_ACTIVITY_BROUGHT_TO_FRONT 、

FLAG_ACTIVITY_CLEAR_TOP、FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET、

FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS、FLAG_ACTIVITY_MULTIPLE_TASK和

FLAG_ACTIVITY_NEW_TASK 等。每种含义大家看SDK文档和具体跑下这样你的记忆会更深刻些。2. Activity和Task的启动模式有哪些? 每种含义是什么?

有关在AndroidManifest.xml中的android:launchMode定义,主要有standard、singleTop、singleTask 和singleInstance,同时对于android:taskAffinity这些问题大家也要了解,Android开发网在以前的文章中讲过,不过很多开发者仍然不是很清楚,这些基础问题我们以后仍然会再次总结。

3. 通过Intent传递一些二进制数据的方法有哪些?

1). 使用Serializable接口实现序列化,这是Java常用的方法。

2). 实现Parcelable接口,这里Android的部分类比如Bitmap类就已经实现了,同时Parcelable在Android AIDL中交换数据也很常见的。

4. 能说下Android应用的入口点吗?

在Google的虚拟机中Application实例中已经实现了main方法,有关具体的Application介绍可以参考Android程序的入口点是什么,不是Main()吗:https://www.wendangku.net/doc/671893996.html,/kaifafaq/829.html

5. Java基础问题,说说HashSet和HashTable的区别?

这个相信Java程序员都知道HashSet相对于HashMap就是不能存放重复的数据,对于HashTable来说,存放的数据不能出现key或value为null这样的情况。

6. Java基础问题,用Java的集合类写下广度优先搜索.

这个属于基础数据结构问题,通过队列处理一层一层,相对于深度优先的栈处理方式来说更实用一些。7. Android都有哪些XML解析器,都熟练掌握吗?

这里XmlPull、SAX和DOM相信做过Web开发的都已经滚瓜烂熟了。

8. SQLite支持事务吗? 添加删除如何提高性能?

SQLite作为轻量级的数据库,比MySQL还小,但支持SQL语句查询,提高性能可以考虑通过原始经过优化的SQL查询语句方式处理。

9. Android Service和Binder、AIDL你都熟练吗?

作为Android重要的后台服务,这些每个Android开发者都应该掌握,这也算是和Java SE最大的不同了,具体的实例大家可以查看Android音乐播放器的源代码Music.git中的,这里不再赘述。

百度Android开发面试题

1、Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念

DVM指Dalvik的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik 虚拟机实例。而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念。

2、sim卡的EF 文件有何作用

sim卡的文件系统有自己规范,主要是为了和手机通讯,sim本

身可以有自己的操作系统,EF就是作存储并和手机通讯用的

3、嵌入式操作系统内存管理有哪几种,各有何特性?

页式,段式,段页,用到了MMU,虚拟空间等技术

4、什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?

嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。主要用于工业控制、军事设备、

航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。又可分为软实时和硬实时两种,而android是基于linux内核的,因此属于软实时。

5、一条最长的短信息约占多少byte?

中文70(包括标点),英文160个字节

6、android中的动画有哪几类,它们的特点和区别是什么?

两种,一种是Tween动画、还有一种是Frame动画。Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。

7、handler机制的原理

andriod提供了Handler 和Looper 来满足线程间的通信。Handler 先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(Message Exchange)。

1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(消息队列)。2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到Message Queue里;或者接收Looper从Message Queue取出)所送来的消息。

3)Message Queue(消息队列):用来存放线程放入的消息。

4)线程:UI thread 通常就是main thread,而Android启动程序时会替它建立一个Message Queue。

8、说说mvc模式的原理,它在android中的运用

MVC(Model_view_contraller)” 模型_视图_控制器”。MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会

从潜在的Model中获取数据来刷新自己。

View重绘和内存泄露的好像是面试经常问的问题

1. View的刷新:

在需要刷新的地方,使用handle.sendmessage发送信息,然后在handle的getmessage里面执行invaliate 或者postinvaliate.

2. GC内存泄露

出现情况:

1.数据库的cursor没有关闭

2.构造adapter时,没有使用缓存contentview

衍生listview的优化问题-----减少创建view的对象,充分使用contentview,可以使用一静态类来优化处理getview的过程/

3.Bitmap对象不使用时采用recycle()释放内存

4.activity中的对象的生命周期大于activity

调试方法: DDMS==> HEAPSZIE==>dataobject==>[Total Size]

还有其他问题,大家欢迎提出阿,可以是整体架构的,还有这个Hal层.

这篇文章会涉及到以下几个内容

一Activity的生命周期

二让Activity变成一个窗口:Activity属性设定

三你后台的Activity被系统

回收怎么办:onSaveInstanceState

四调用与被调用:我们的通信使者- Intent

一Activity的生命周期

和其他手机平台的应用程序一样,Android的应用程序的生命周期是被统一掌控的,也就是说我们写的应用程序命运掌握在别人(系统)的手里,我们不能改变它,只能学习并适应它。

简单地说一下为什么是这样:我们手机在运行

一个应用程序的时候,有可能打进来电话发进来短信,或者没有电了,这时候程序都会被中断,优先去服务电话的基本功能,另外系统也不允许你占用太多资源,至少要保证电话功能吧,所以资源不足的时候也就有可能被干掉。言归正传,Activity的基本生命周期如下代码所示:

Java 代码

1

public class MyActivity extends Activity

2

{

3

protected void onCreate(Bundle savedInstanceState);

4

protected void onStart();

5

protected void onResume();

6

protected void onPause();

7

protected void onStop();

8

protected void onDestroy();

9

}

你自己写的Activity会按需要

重载这些方法,onCreate是免不了的,在一个Activity正常启动的过程中,他们被调用的顺序是onCreate -> onStart ->onResume, 在Activity被干掉的时候顺序是onPause -> onStop -> onDestroy ,这样就是一个完整的生命周期,但是有人问了

,程序正运行着呢来电话了,这个程序咋办?中止了呗,如果中止的时候新出的一个Activity是全屏的那么:onPause->onStop ,恢复的时候onStart->onResume ,如果打断

这个应用程序的是一个Theme为Translucent 或者Dialog 的Activity那么只是onPause ,恢复

的时候onResume 。

详细介绍一下这几个方法中系统在做什么以及我们应该做什么:

onCreate:

在这里创建界面,做一些数据的初始化工作

onStart:

到这一步变成用户可见不可交互的

onResume:

变成和用户可交互的,(在activity 栈系统通过栈的方式管理这些个Activity的最上面,运行完弹出栈,则回到上一个Activity)

onPause:

到这一步是可见但不可交互的,系统会停止动画等消耗CPU 的事情从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降低,有可能被系统收回。在这里保存的数据,应该在onResume里读出来,注意:这个方法里做的事情时间要短,因为下一个activity不会等到这个方法完成才启动

onstop:

变得不可见,被下一个activity覆盖了

onDestroy: 这是activity被干掉前最后一个被调用方法了,可能是外面类调用finish方法或者是系统为了节省空间将它暂时性的干掉,可以用isFinishing()来判断它,如果你有一个Progress Dialog在线程中转动,请在onDestroy里把他cancel掉,不然等线程结束的时候,调用Dialog的cancel方法会抛异常的。onPause,onstop,onDestroy,三种状态下activity都有可能被系统干掉为了保证程序的正确性,你要在onPause()里写上持久层操作的代码,将用户编辑的内容都保存到存储介质上(一般都是数据库)。实际工作中因为生命周期的变化而带来的问题也很多,比如你的应用程序起了新的线程在跑,这时候中断了,你还要去维护那个线程,是暂停还是杀掉还是数据回滚,是吧?因为Activity可能被杀掉,所以线程中使用的变量和一些界面元素就千万要注意了,一般我都是采用Android的消息机制[Handler,Message]来处理多线程和界面交互的问题。这个我后面会讲一些,最近因为这些东西头已经很大了,等我理清思绪再跟大家分享。

二让Activity变成一个窗口:Activity属性设定

讲点轻松的吧,可能有人希望做出来的应用程序是一个漂浮在手机主界面的东西,那么很简单你只需要设置一下Activity的主题就可以了在AndroidManifest.xml 中定义Activity的地方一句话:

Xml代码

android

:theme="@android:style/Theme.Dialog"

android:theme="@android:style/Theme.Dialog"

这就使你的应用程序变成对话框的形式弹出来了,或者Xml代码

android:theme="@android:style/Theme.Translucent"

android:theme="@android:style/Theme.Translucent"

就变成半透明的,[友情提示-.-]类似的这种activity的属性可以在android.R.styleable 类的AndroidManifestActivity 方法中看到,AndroidManifest.xml中所有元素的属性的介绍都可以参考这个类android.R.styleable

上面说的是属性名称,具体有什么值是在android.R.style中

可以看到,比如这个"@android:style/Theme.Dialog"就对应于android.R.style.Theme_Dialog ,('_'换成'.' <--注意:这个是文章内容不是笑脸)就可以用在描述文件

中了,找找类定义和描述文件中的对应关系就都明白了。

三你后台的Activity被系统回收怎么办:onSaveInstanceState

当你的程序中某一个Activity A 在运行时中,主动或被动地运行另一个新的Activity B 这个时候A会执行Java代码

1

public void onSaveInstanceState(Bundle outState) {

2

super.onSaveInstanceState(outState);

3

outState.putLong("id", 1234567890);

4

}

5

public void onSaveInstanceState(Bundle outState) {

6

}

B 完成以后又会来找A, 这个时候就有两种情况,一种是A被回收,一种是没有被回收,被回收的A就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上参数savedInstanceState,没被收回的就还是onResume就好了。

savedInstanceState是一个Bundle对象,你基本上可以把他理解为系统帮你维护的一个Map对象。在onCreate()里你可能会用到它,如果正常启动onCreate就不会有它,所以用的时候要判断一下是否为空。Java代码

1

if(savedInstanceState !=null){

2

long id =savedInstanceState.getLong("id");

3

}

4

if(savedInstanceState !=null){}

就像官方的Notepad教程

里的情况,你正在编辑某一个note,突然被中断,那么就把这个note的id记住,再起来的时候就可以根据这个id去把那个note取出来,程序就完整一些。这也是看你的应用需不需要保存什么,比如你的界面就是读取一个列表,那就不需要特殊记住什么,哦,

没准你需要记住滚动条的位置...

四调用与被调用:我们的通信使者Intent

要说Intent了,Intent就是这个这个意图,应用程序间Intent进行交流,打个电话啦,来个电话啦都会发Intent, 这个是Android架构的松耦合的精髓部分,大大提高了组件的复用性,比如你要在你的应用程序中点击按钮,给某人打电话,很简单啊,看下代码先:

Java代码:

1

Intent intent = new Intent();

2

intent.setAction(Intent.ACTION_CALL);

3

intent.setData(Uri.parse("tel:"+ number));

4

startActivity(intent);

扔出这样一个意图,系统看到了你的意图就唤醒了电话拨号程序,打出来电话。什么读联系人,发短信啊,邮件啊,统统只需要扔出intent就好了,这个部分设计地确实很好啊。

那Intent通过什么来告诉系统需要谁来接受他呢?

通常使用Intent有两种方法,第一种是直接说明需要哪一个类来接收代码如下:

Java代码

1

Intent intent = new Intent(this,MyActivity.class);

2

intent.getExtras().putString("id","1");

3

startActivity(intent);

4

Intent intent = new Intent(this,MyActivity.class);intent.getExtras().putString("id","1");

5

startActivity(intent);

第一种方式很明显,直接指定了MyActivity为接受者,并且传了一些数据给MyActivity,在MyActivity里可以用getIntent()来的到这个intent和数据。

第二种就需要先看一下AndroidMenifest中的intentfilter的配置了

Xml代码

01

02

03

04

05

06

07

08

09

10

11

12

13

14

这里面配置用到了action, data, category这些东西,那么聪明的你一定想到intent里也会有这些东西,然后一匹配不就找到接收者了吗?

action其实就是一个意图的字符串名称。

上面这段intent-filter的配置文件说明了这个Activity可以接受不同的Action,当然相应的程序逻辑也不一样咯,提一下那个mimeType,他是在

ContentProvider里定义的,你要是自己实现一个ContentProvider就知道了,必须指定mimeType才能让数据被别人使用。

不知道原理说明白没,总结一句,就是你调用别的界面不是直接new那个界面,而是通过扔出一个intent,让系统帮你去调用那个界面,这样就多么松藕合啊,而且符合了生命周期被系统管理的原则。

想知道category都有啥,Android为你预先定制好的action都有啥等等,请亲自访问官方链接Intent ps:想知道怎么调用系统应用程序的同学,可以仔细看一下你的logcat,每次运行一个程序的时候是不是有一些信息比如:

Starting activity: Intent

{action=android.intent.action.MAINcategories={https://www.wendangku.net/doc/671893996.html,UNCHER}flags=0x10200000c omp={com.android.camera/com.android.camera.GalleryPicker} }

再对照一下Intent的一些set方法,就知道怎么调用咯,希望你喜欢:)

一,listview你是怎么优化的。

二,view的刷新,之前说过

三,IPC及原理

四,Android多线程

五,Android为什么要设计4大组件,他们之间的联系,不设计行不行(主要是为了实现MVC模式,然而java中最难的模式也是这个,很少有产品能将这个模式做得很好【Technicolor的面试官问的这个】)六,service的周期,activity的周期,谈下你对Android内部应用的了解,比如他做电话,以及联系人等等应用。框架层有很多东西还是多看看,熟悉Android怎么做的,不管你做应用程开发还是应用框架层开发很有好处的。

在就是你项目经验,突出你遇到什么难点,然后是怎么解决的!尽量将每个技术点凸显出来,当然面试官有时候会为了体现你是否真正做过,他会问你,你在这个应用中做那个模块,用了多少个类之类的问题。偶尔有的面试官会问你,你用过Android自带的单元测试了没,怎么用的?

当然我面试过很多家单位,有的是做平板,手机,数字电视,有的是做出个erp之类的客户端等等,出于前面的三个,基本上都是将Android的全部改掉,如果真正要做Android的话,大家要学的还很多。

总之,一句话,什么样的面试官都有,去面试的时候要做好一切心理准备,不管是技术还是基础都得扎实。一个人的交谈能力也很重要,总之不是非常标准的普通话,最起码你说的得让别人听得懂,而且得把面试官讲得非常彻底,这样你获得offer的机会更大,谈工资也有优势~~当然曾经一家公司的面试官跟我说过,技术是不惜钱的,只要你有能力,多少钱他都请。

1.View如何刷新?

View 可以调用invalidate()和postInvalidate()这两个方法刷新

以下面试题都是在网上找的总结出来的,谢谢大家的分享!希望,我们共同进步,找到自己梦想的公司:

1.android dvm 的进程和Linux的进程,应用程序的进程是否为同一个概念:

答:dvm是dalivk虚拟机。每一个android应用程序都在自己的进程中运行,都拥有一个dalivk虚拟机实例。而每一个dvm都是在linux的一个进程。所以说可以认为是同一个概念。

2.android的动画有哪几种?他们的特点和区别是什么?

答:两种,一种是tween动画,一种是frame动画。tween动画,这种实现方式可以使视图组件移动,放大或缩小以及产生透明度的变化。frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。

3.handler进制的原理:

答:android提供了handler和looper来满足线程间的通信。Handler先进先出原则。looper用来管理特定线程内对象之间的消息交换(message Exchange).

1)looper:一个线程可以产生一个looper对象,由它来管理此线程里的message queue(消息队列)

2)handler:你可以构造一个handler对象来与looper沟通,以便push新消息到messagequeue里;或者接收looper(从messagequeue里取出)所送来的消息。

3)messagequeue:用来存放线程放入的消息。

4)线程:UI thread 通常就是main thread,而android启动程序时会为它建立一个message queue.

4.android view的刷新:

答:Android中对View的更新有很多种方式,使用时要区分不同的应用场合。我感觉最要紧的是分清:多线程和双缓冲的使用情况。

1).不使用多线程和双缓冲

这种情况最简单了,一般只是希望在View发生改变时对UI进行重绘。你只需在Activity中显式地调用View 对象中的invalidate()方法即可。系统会自动调用View的onDraw()方法。

2).使用多线程和不使用双缓冲

这种情况需要开启新的线程,新开的线程就不好访问View对象了。强行访问的话会报:

android.view.ViewRoot$CalledFromWrongThreadException:Only the originalthread that created a view hierarchy can touch its views.

这时候你需要创建一个继承了android.os.Handler的子类,并重写handleMessage(Messagemsg)方法。android.os.Handler是能发送和处理消息的,你需要在Activity中发出更新UI的消息,然后再你的Handler (可以使用匿名内部类)中处理消息(因为匿名内部类可以访问父类变量,你可以直接调用View对象中的invalidate()方法)。也就是说:在新线程创建并发送一个Message,然后再主线程中捕获、处理该消息。

3).使用多线程和双缓冲

Android中SurfaceView是View的子类,她同时也实现了双缓冲。你可以定义一个她的子类并实现SurfaceHolder.Callback接口。由于实现SurfaceHolder.Callback接口,新线程就不需要android.os.Handler 帮忙了。SurfaceHolder中lockCanvas()方法可以锁定画布,绘制玩新的图像后调用unlockCanvasAndPost(canvas)解锁(显示),还是比较方便得。

5.说说mvc模式的原理,它在android中的运用:

答:android的官方建议应用程序的开发采用mvc模式。何谓mvc?

mvc是model,view,controller的缩写,mvc包含三个部分:

l模型(model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。

2视图(view)对象:是应用程序中负责生成用户界面的部分。也是在整个mvc架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。

3控制器(control)对象:是根据用户的输入,控制用户界面数据显示及更新model对象状态的部分,控制器更重要的一种导航功能,想用用户出发的相关事件,交给m哦得了处理。

android鼓励弱耦合和组件的重用,在android中mvc的具体体现如下:

1)视图层(view):一般采用xml文件进行界面的描述,使用的时候可以非常方便的引入,当然,如何你对android了解的比较的多了话,就一定可以想到在android中也可以使用javascript+html等的方式作为view层,当然这里需要进行java和javascript之间的通信,幸运的是,android提供了它们之间非常方便的通信实现。

2)控制层(controller):android的控制层的重任通常落在了众多的acitvity的肩上,这句话也就暗含了不要在acitivity中写代码,要通过activity交割model业务逻辑层处理,这样做的另外一个原因是android 中的acitivity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。

3)模型层(model):对数据库的操作、对网络等的操作都应该在model里面处理,当然对业务计算等操作也是必须放在的该层的。

6.Activity的生命周期:

答:onCreate: 在这里创建界面,做一些数据的初始化工作

onStart: 到这一步变成用户可见不可交互的

onResume:变成和用户可交互的,(在activity 栈系统通过栈的方式管理这些个Activity的最上面,运行完弹出栈,则回到上一个Activity)

onPause: 到这一步是可见但不可交互的,系统会停止动画等消耗CPU 的事情从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降低,有可能被系统收回。在这里保存的数据,应该在

onstop: 变得不可见,被下一个activity覆盖了

onDestroy: 这是activity被干掉前最后一个被调用方法了,可能是外面类调用finish方法或者是系统为了节省空间将它暂时性的干掉

7.让Activity变成一个窗口:

答:Activity属性设定:有时候会做个应用程序是漂浮在手机主界面的。这个只需要在设置下Activity的主题theme,即在Manifest.xml定义Activity的地方加一句:

android :theme="@android:style/Theme.Dialog"

如果是作半透明的效果:

android:theme="@android:style/Theme.Translucent"

8.Android中常用的五种布局:

答:LinearLayout线性布局;AbsoluteLayout绝对布局;TableLayout表格布局;RelativeLayout相对布局;FrameLayout帧布局;

9.Android的五种数据存储方式:

答:sharedPreferences;文件;SQLite;contentProvider;网络

10.请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系:

答:Handler获取当前线程中的looper对象,looper用来从存有Message的Message Queue里取出message,再由Handler进行message的分发和处理。

11.AIDL的全称是什么?如何工作?能处理哪些类型的数据?

答:AIDL(AndroidInterface Definition Language)android接口描述语言

12.系统上安装了多种浏览器,能否指定某浏览器访问指定页面?请说明原由:

答:通过直接发送Uri把参数带过去,或者通过manifest里的intentfilter里的data属性。代码如下:Intent intent = new Intent();

Intent.setAction(“android.intent.action.View”);

Uri uriBrowsers = Uri.parse(“https://www.wendangku.net/doc/671893996.html,”);

Intent.setData(uriBrowsers);

//包名、要打开的activity

intent.setClassName(“com.android.browser”,”com.android.browser.BrowserActivity”);

startActivity(intent);

13.什么是ANR,如何避免?

答:ANR的定义:

在android上,如果你的应用程序有一段时间响应不移灵敏,系统会向用户提示“应用程序无响应”(ANR:application Not Responding)对话框。因此,在程序里对响应性能的设计很重要,这样,系统不会显示ANR给用户。

如何避免:

首先来研究下为什么它会在android的应用程序里发生和如何最佳构建应用程序来避免ANR.

android应用程序通常是运行在一个单独的线程(例如:main)里,这就意味你的应用程序所做的事情如果在主线程里占用了大长时间的话,就会引发ANR对话框,因为你的应用程序并没有给自己机会来处理输入事件或者Intent广播。

因此,运行在主线程里的任何访求都尽可能少做事情。特别是,activity应该在它的关键生命周期方法(onCreate()和onResume())里尽可能少的去作创建操作。潜在的耗时操作,例如网络或数据库操作,或者高耗时的计算如改变位图尺寸,应该在子线程里(或者以数据库操作为例,通过异步请求的方式)来完成。然而,不是说你的主线程阻塞在那里等待子线程的完成---也不是调用Thread.wait()或者Thread.sleep()。替代的方法是:主线程应该为子线程提供一个Handler,以便完成时能够提交给主线程。以这种方式设计你的应用程序,将能保证你的主线程保持对输入的响应性并能避免由5秒输入事件的超时引发的ANR对话框。这种做法应该在其它显示UI的线程里效仿,因为它们都受相同的超时影响。

IntentReceiver执行时间的特殊限制意味着它应该做:在后台里做小的、琐碎的工作,如保存设定或注册一个Notification。和在主线程里调用的其它方法一样,应用程序应该避免在BroadcastReceiver里做耗时的操作或计算,但也不是在子线程里做这些任务(因为BroadcastReceiver的生命周期短),替代的是,如果响应Intent广播需要执行一个耗时的动作的话,应用程序应该启动一个Service。顺便提及一句,你也应该避免在Intent Receiver里启动一个Activity,因为它会创建一个新的画面,并从当前用户正在运行的程序上抢夺焦点。如果你的应用程序在响应Intent广播时需要向用户展示什么,你应该使用Notification Manager来实现。

一般来说,在应用程序里,100到200ms是用户能感知阻滞的时间阈值,下面总结了一些技巧来避免ANR,并有助于让你的应用程序看起来有响应性。

如果你的应用程序为响应用户输入正在后台工作的话,可以显示工作的进度(ProgressBar和ProgressDialog对这种情况来说很有用)。特别是游戏,在子线程里做移动的计算。如果你的程序有一个耗时的初始化过程的话,考虑可以显示一个Splash Screen或者快速显示主画面并异步来填充这些信息。在这两种情况下,你都应该显示正在进行的进度,以免用户认为程序被冻结了。

14.什么情况会导致Force Close?如何避免?能否捕获导致其的异常?

答:如空指针等可以导致ForceClose;可以看Logcat,然后找到对应的程序代码来解决错误。

15.横竖屏切换时候的activity的生命周期:

答:

1)新建一个activity,并把各个生命周期打印出来

2)运行activity,得到如下信息:

onCreate()à

onStart()à

onResume()à

3) 按ctrl+F12切换成横屏时

onSaveInstanceState()à

onPause()à

onStop()à

onDestroy()à

onCreate()à

onStart()à

onRestoreInstanceState()à

onResume()à

4) 再按ctrl+f12切换成竖屏时,发现打印了两次相同的Log

onSaveInstanceState()à

onPause()à

onStop()à

onDestroyà

onCreate()à

onStart()à

onRestoreInstanceState()à

onResume()à

onSaveInstanceState()à

onPause()à

onStop()à

onDestroyà

onCreate()à

onStart()à

onRestoreInstanceState()à

onResume()à

5) 修改AndroidManifest.xml,把该Activity添加android:configChanges=“orientation”,执行步骤3 onSaveInstanceState()à

onPause()à

onStop()à

onDestroy()à

onCreate()à

onStart()à

onRestoreInstanceState()à

onResume()à

6) 修改AndroidManifest.xml,把该Activity添加android:configChanges=“orientation”,执行步骤4,发现不会再打印相同信息,但多打印了一行onConfigChanged

onSaveInstanceState()à

onPause()à

onStop()à

onDestroy()à

onCreate()à

onStart()à

onRestoreInstanceState()à

onResume()à

onConfigurationChanged()à

Android工程师笔试题及答案(汇编)

Android工程师面试题 一、基础(79分) 1. String s = new String("xyz");创建了几个String Object? ( )3分 A、1个 B、2个 C、3个 D、4个 2. Math.round(11.5)和Math.round(-11.5)分别等于多少?()2分 A、11和-11 B、12和-11 C、11和-12 D、12和-12 3.以下错误的说法有:( )2分 A、只要设计合理,当出现error这样的情况时,程序完全可以自动处理 B、exception 表示一种设计或实现问题 C、Set和Map都继承自Collection接口 D、接口可以继承接口 E、抽象类可以继承没有构造函数的实体类 4. 以下哪种类型不能作为switch(expr1)表达式的expr1?( )3分 A、int B、long C、char D、byte 5. 有关ArrayList和Vector的说法,那些是错误的?( )3分 A、Vector是线程安全的 B、ArrayList是线程序不安全的 C、当需要增长时,Vector默认增长为原来一培 D、当需要增长时, ArrayList默认增长为原来一培 6. 以下说法那些是错误的?()3分 A、一个char型变量可以存储一个中文汉字 B、String是最基本的数据类型 C、Integer的缺省值是0 D、String类提供了数值不可改变的字符串 7.请指出以下代码的执行结果()5分 class A{ static{ System.out.print("X"); } public A(){ System.out.print("2"); } } class B extends A{ static{ System.out.print("a"); } public B(){ System.out.print("b"); } } public class Hello{ public static void main(String[] ars){

腾讯面试题有答案

腾讯面试题有答案

1. 1-20的两个数把和告诉A,积告诉B,A说不知道是多少, B也说不知道,这时A说我知道了,B接着说我也知道了,问这两个数是多少? 答案:2和3 2 爸爸,妈妈,妹妹,小强,至少两个人同一生肖的概率是多 少? 1-12*11*10*9/12*12*12*12 = 1-55/96 = 41/96 3, 计算a^b << 2 答案: 运算符优先级:括号,下标,->和.(成员)最高; 单目的比双目的高; 算术双目的比其它双目的高; 位运算高于关系运算; 关系运算高于按位运算(与,或,异或);

按位运算高于逻辑运算; 三目的只有一个条件运算,低于逻辑运算; 赋值运算仅比, (顺序运算)高。 在此题中,位左移"<<" 优先级高于按位异或"^",因此b 先左移两位(相当于乘以4), 再与a异或。 例如:当 a = 6; b = 4 时;则a^b<<2 = 22 4 如何输出源文件的标题和当前执行行的行数? 答案:printf("The file name: %d\n", __FILE__); printf("The current line No:%d\n", __LINE__); ANSI C标准预定义宏: __LINE__

__FILE__ __DATE__ __TIME__ __STDC__ 当要求程序严格遵循ANSI C标准时该标识符被赋值为1 __cplusplus__ 当编写C++程序时该标识符被定义 5 a[3][4]哪个不能表示a[1][1]: *(&a[0][0]+5) *(*(a+1)+1) *(&a[1]+1) *(&a[0][0]+4) 答案: *(&a[1]+1) a是数组的首地址,a[1]就表示a[1][0]地址了,不用再取地址了。 6 fun((exp1,exp2),(exp3,exp4,exp5))有几个实参? 答案:两个。

android笔试题及答案

单选题 中可以用来处理中警示,确认等对话框地是() .假设目录下有文件结构,用()方法将该网页加载至 时,需传入地参数是() . . . . .下列不属于补间动画相关类地是() 中网络互连中需要获取状态码,根据状态码来判断请求是否已经完成,下列状态码表示请求完成地是() .关于说法错误地是:() 里可以通过设定转换时候地透明位 .在使用一个之前,不一定要调用方法 是设置资源被读入到这个地时候动画效果 是资源文件从这个里消失地时候要实现地动画效果 .建立蓝牙连接时通过方法来获取对象 () (); (); . () .关于地说法不正确地是( ) .它实现不同进程间通信地一种机制 .它避免了在新线程中刷新地操作 .它采用队列地方式来存储 .它实现不同线程间通信地一种机制

8.和地主要区别是(): . 内部基于链表,而是基于数组地 . 地大部分方法做了同步,而没有同步 . 是可串行化地,而不是 . 实现了,而没有 .下列属于解析文件地优点地是() .将整个文档输在内存中,便于操作,支持删除,修改,重新排列等多种功能 .不用事先调入整个文档,占用资源少 .整个文档调入内存,浪费时间和空间 .不是长久驻留在内存,数据不是持久地,事件过后,若没有保存数据,数据就会消失""; ""; ""; 总共创建( )个对象. 多选题 .在添加第一个窗口小部件时,会执行地方法是() .下列属于优点地是() 与编程语言无关. 可以使用任何语言来完成是完全和厂商无关. 与平台无关 是简单地,可扩展地 3.下列属于解析需要用到地类和接口是() A. .在使用蓝牙必须获取地权限是() .< ""> .< "" > .< ""> .< ""> 5.类地重要方法()

Android面试题附答案

Android面试题附答案 一、选择题(30题,每题1.5分,共45分) 1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分类,按功能分为:(c),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(g) A、输入流和输出流 B、字节流和字符流 C、节点流和处理流 D、File stream E、Pipe stream F、Random stream G、Filter stream 2.下列代码的执行结果是:(b) public class Test3{ public static void main(String args[]){ System.out.print(100%3); System.out.print(“,”); System.out.println(100%3.0); } } A、1,1 B、1,1.0 C、1.0,1 D、1.0,1.0

3.在继承中,关于构造方法的说明,下列说法错误的是(d) A、子类无条件的继承父类的无参构造方法, B、子类可以引用父类中的有参构造方法,使用super关键字, C、如果子类没有构造方法,则父类无参构造方法作为自已的构造方法, D、如果子类有无参构造方法,而父类的无参构造方法则被覆盖。 4.以下程序的运行结果为(b) public class IfTest{ public static void main(String args[]){ int x=3; int y=1; if(x==y) System.out.println(“Not equal”); else System.out.println(“Equal”); } } A、Not equal B、Equal C、无输出 D、编译出错 5.Java语言中字符串“学Java”所占的内存空间是(a) A. 6个字节 B. 7个字节

Android编程基础笔试题及答案2.0

《Android 编程基础》试卷A 注意事项: 1. 本试卷共8页,满分100分; 2. 请把学院、姓名、班级写到密封线内,考试时间90分钟; 3. 请不要把答案写在密封线内 一、单选题(共35题,共61分) 1、 D03MA057(2分)退出 activity 对一些资源以及状态的操作保存,可以在生命周期的哪个函数中进行 a A 、onPause() B 、onCreate() C 、onResume() D 、onStart() 2、 D02MA058 (2分) Android 项目工程下面的 assets 目录的作用是什么 b A 、放置应用到的图片资源。 Res/drawable B 、主要放置一些文件资源,这些文件会被原封不动打包到 apk 里面 C 、放置字符串,颜色,数组等常量数据 res/values D 、放置一些与 UI 相应的布局文件,都是 xml 文件 res/layout 3、 D04MA059 (2分)下列不属于android 布局的是(c) A 、F r a m e L a y o u t B 、L i n e a r L a y o u t C 、BorderLayout D 、T a b l e L a y o u t E 、R e l a t i v e L a y o u t 4、 D08MA2060 (2分)Intent 的作用的是 a A 、intent 是连接四大组件的纽带,可以实现界面间切换,可以包含动作和动作数据, B 、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会 因为切 换页面而消失 service C 、实现应用程序间的数据共享 contentprovider D 、处理一个应用程序整体性的工作 5、 D04EA1061(1分) 下列哪个是AbsoluteLayout 中特有的属性 b A,android:layout_height B,android:layout_x C,android:layout_above D,android:layout_toRightOf 6、 D07EA1062(1分)RatingBar 组件中不能用属性直接设置的是d A,五角星个数 B,当前分数C,分数的增量D,五角星的色彩 7、 D 10EA1063(1分) 在手机开发中常用的数据库是_a__ A,sqlLite B,Oracle C,Sql Server D,Db23 8、 D14MA2064(2分) 关于BroadcastReceiver 的说法不正确的是_b_ A, 是用来接收广播Intent 的 密封线内不要答 题 学院班级姓名

android java笔试题(带大部分答案)

请将试题答在答题卡上,不要在试卷中做任何标记 一、基础题: 1.请写出输出结果 public class Test1 { public static void changeStr(String str){ str="welcome"; } public static void main(String[] args) { String str="1234"; changeStr(str); System.out.println(str); } } ___"1234"____________________________________________________ 2.请写出输出结果 public class Test2 { static boolean foo(char c) { System.out.print(c); return true; } public static void main(String[] argv) { int i = 0; for (foo('A'); foo('B') && (i < 2); foo('C')) { i++; foo('D'); } } } _____ABDCBDCB___________________________________________________ 3.class A { protected int method1(int a, int b) { return 0; } } 以下A扩展类中的方法哪两个是正确的:(选择两个) A.public int method1(int a, int b) { return 0;} B.private int method1(int a, int b) { return 0;} C.private int method1(int a, long b) { return 0;} D.public short method1(int a, int b) { return 0;} E.static protected int method1(int a, int b) { return 0;} ____AD___________________________________________________ 4.public class Outer{ public void someOuterMethod() { // Line 3

腾讯公司cc++笔试题

这部分的腾讯c/c++面试用的笔试题主要是c/c++、数据结构、简单算法、操作系统等方面的基础知识,方便去腾讯面试开发的同仁有所参考! 笔试题的题型好像有sizeof、树等选择题。 填空题是补充完整程序。 附加题有写算法的、编程的、数据库sql语句查询的。 还有一张c/c++开放性问题。 腾讯c/c++笔试题如下: 1、请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句 #define Max(a,b) ( a/b)?a:b 2、如何输出源文件的标题和目前执行行的行数 int line = __LINE__; char *file = __FILE__; cout<<"file name is "<<(file)<<",line is "< 3、两个数相乘,小数点后位数没有限制,请写一个高精度算法 4、写一个病毒 while (1) { int *p = new int[10000000];

} 5、不使用额外空间,将A,B两链表的元素交*归并 6、将树序列化转存在数组或链表中 struct st{ int i; short s; char c; }; sizeof(struct st); 7、 char * p1; void * p2; int p3; char p4[10]; sizeof(p1...p4) =? 8、 4,4,4,10

二分查找 快速排序 双向链表的删除结点 由于近来有些人都问我腾讯笔试和面试到底是考什么,问什么,所以就灌下这篇水文,也算是我自己复习一遍以及给有兴趣或者后来者嗤鼻一笑的机会:) 其实应聘内容也真的很难说清楚,而且我也不知道我所经历的是不是有代表性,何况我还是找工作的新手(本科也没找过工作,之前也只是应聘过华为),所以如果下文有什么疏漏之处,尽管踩我好了:) 1。笔试我想腾讯的笔试还是比较适中的,虽然广度与深度都不够,但是毕竟因为它只是笔试,只是用来筛选面试者的,而不是象学术竞赛一样一战决胜负,何况它是笔试,所以也就有笔试的局限性。(啊哦,是不是离题?)笔试主要是C++的内容,然后还有一部分数据结构、系统平台(WIN32和LINUX都有)的编程知识(线程模型、共享内存、编译或对象模型等)、JAVA (这次笔试JAVA有一题,是填写同步的关键字的,当然题目没有明明白白告诉你写synchronized这个关键字啦,否则就要被人BS了,哈哈。好在JAVA 下的同步基本实现机制相当简洁,只要刚才那个关键字申明一下就可以了,学过java多线程模型的人都应该知道填什么,可惜我那时我也拼写错误了,漏了一个字母。。。,好象是5分一题的,损失不小哦)等。可以说还是比较有代表性的。

android笔试题及答案

单选题 中可以用来处理js中警示,确认等对话框的是(C) 2.假设assets目录下有文件结构html/,用loadUrl()方法将该网页加载至 webView 时,需传入的参数是(B) A. B. C. D. 3.下列不属于补间动画相关类的是(B) 中网络互连中需要获取状态码,根据状态码来判断请求是否已经完成,下列状 态码表示请求完成的是(D) 5.关于ImageSwitcher 说法错误的是:( B ) 里可以通过Alpha设定转换时候的透明位 B.在使用一个ImageSwitcher之前,不一定要调用setFactory方法 是设置资源被读入到这个ImageSwitcher的时候动画效果 是资源文件从这个ImageSwitcher里消失的时候要实现的动画效果 6.建立蓝牙连接时通过_D_方法来获取BluetoothAdapter对象 D. () 7.关于Handler的说法不正确的是( A ) A.它实现不同进程间通信的一种机制 B.它避免了在新线程中刷新UI的操作 C.它采用队列的方式来存储Message D.它实现不同线程间通信的一种机制 8.Vector和ArrayList的主要区别是(B): A. ArrayList内部基于链表,而Vector是基于数组的

B. Vector的大部分方法做了同步,而ArrayList没有同步 C. Vector是可串行化的,而ArrayList不是 D. Vector实现了RandomAccess,而ArrayList没有 9.下列属于SAX解析xml文件的优点的是(B ) A.将整个文档输在内存中,便于操作,支持删除,修改,重新排列等多种功能 B.不用事先调入整个文档,占用资源少 C.整个文档调入内存,浪费时间和空间 D.不是长久驻留在内存,数据不是持久的,事件过后,若没有保存数据,数据就会消失 a1="abc"; String a2="abc"; String a3="abcd"; 总共创建( A )个String对象。 多选题 1.在添加第一个appwidget窗口小部件时,会执行的方法是(ABD) 2.下列属于SOAP优点的是(ABCD) A,SOAP 与编程语言无关。SOAP 可以使用任何语言来完成 B,SOAP 是完全和厂商无关。 C,SOAP 与平台无关D,SOAP 是简单的,可扩展的 3.下列属于SAX解析XML需要用到的类和接口是(BCD) A.DocumentBuilder 4.在使用蓝牙必须获取的权限是(AD) 5.Chronometer类的重要方法(ABC) 简答题 1.oom是什么如何避免 当程序需要申请一段“大”内存,但是虚拟机没有办法及时的给到,即使做了GC操作以后这就会抛出OutOfMemoryException 也就是OOM 避免:

腾讯笔试题目及答案

腾讯笔试题目及答案 1. 1-20的两个数把和告诉A,积告诉B,A说不知道是多少,B也说不知道,这时A说我知道了,B接着说我也知道了,问这两个数是多少? 答案:2和3 2 爸爸,妈妈,妹妹,小强,至少两个人同一生肖的概率是多少? 1-12*11*10*9/12*12*12*12 = 1-55/96 = 41/96 3, 计算 a^b << 2 答案: 运算符优先级:括号,下标,->和.(成员)最高; 单目的比双目的高; 算术双目的比其他双目的`高; 位运算高于关系运算; 关系运算高于按位运算(与,或,异或); 按位运算高于逻辑运算; 三目的只有一个条件运算,低于逻辑运算; 赋值运算仅比 , (顺序运算)高。 在此题中,位左移”<<”优先级高于按位异或”^”,所以b先左移两位(相当于乘以4), 再与a异或。 例如:当 a = 6; b = 4 时; 则 a^b<<2 = 22 4 如何输出源文件的标题和目前执行行的行数? 答案: printf(”The file name: %d ”, __FILE__); printf(”The current line No:%d ”, __LINE__);

ANSI C标准预定义宏: __LINE__ __FILE__ __DATE__ __TIME__ __STDC__ 当要求程序严格遵循ANSI C标准时该标识符被赋值为1 __cplusplus__ 当编写C++程序时该标识符被定义 5 a[3][4]哪个不能表示 a[1][1]: *(&a[0][0]+5) *(*(a+1)+1) *(&a[1]+1) *(&a[0][0]+4) 答案: *(&a[1]+1) a是数组的首地址,a[1]就表示a[1][0]地址了,不用再取地址了。 6 fun((exp1,exp2),(exp3,exp4,exp5))有几个实参? 答案:两个。 形式参数:在声明和定义函数时,写在函数名后的括号中的参数。 实参是调用参数中的变量,行参是被调用函数中的变量。 7. 希尔冒泡快速插入哪个平均速度最快? 答案:快速排序 快速排序、归并排序和基数排序在不同情况下都是最快最有用的。 8. enum的声明方式 答案:enum 枚举类型名 { 枚举常量1,论文联盟https://www.wendangku.net/doc/671893996.html, 枚举常量2, … 枚举常量n

Android面试题整理

Android常用面试简答题 1、android 中得动画有哪几类,它们得特点与区别就是什 么? 参考答案: 有两种,一种就是 Tween(补间)动画、还有一种就是 Frame(帧)动画。Tween 动画,这种实现方式可以使视图组件移动、放大、缩小以及产 生透明度得变化;另一种 Frame 动画,传统得动画方法,通过顺序得播放排列好得图片来实现,类似电影。 2、请简述Handler得机制原理 参考答案: andriod 提供了 Handler 与 Looper 来满足线程间得通信。Handler 先进先出原则。 Looper类用来管理特定线程内对象之间得消息交换(Message Exchange)。 1)Looper: 一个线程可以产生一个 Looper 对象,由它来管理此线程里 得 Message Queue(消息队列)。 2)Handler: 您可以构造 Handler 对象来与 Looper 沟通,以便 push 新消息到 Message Queue 里;或者接收 Looper从 Message Queue 取出)所送来得消息。 3) Message Queue(消息队列):用来存放线程放入得消息。 4)线程:UI thread 通常就就是 main thread,而 Android 启动程序时会替它建立一个Message Queue。 3、说说mvc模式得原理,它在android中得运用 参考答案: MVC 就是 Model,View,Controller 得缩写,从上图可以瞧出 MVC 包含三个部分: 模型( Model )对象:就是应用程序得主体部分,所有得业务逻辑都应该写在该层。 视图( View )对象:就是应用程序中负责生成用户界面得部分。也就是在整个MVC 架构中用户唯一可以瞧到得一层,接收用户得输入,显 示处理结果。 控制器( Control )对象:就是根据用户得输入,控制用户界面数据显示及更新Model 对象状态得部分,控制器更重要得一种导航功能,想 用用户触发得相关事件,交给 Model处理。 Android 鼓励弱耦合与组件得重用,在 Android 中 MVC 得具体体现如下 1) 视图层( view ):一般采用 xml 文件进行界面得描述,使用得时 候可以非常方便得引入,当然,如何您对 android 了解得比较得多了话,就一定可以想到在 android 中也可以使用javascript+html 等得方式作为 view 层,当然这里需要进行 java 与 javascript 之间得通信,幸运得就是, android 提供了它们之间非常方便得通信实现。

2016腾讯笔试真题与答案

2016腾讯笔试题 2016腾讯笔试题 试卷类型:软件开发A1 考试时长:12分钟 一不定项选择题(共25题,每题4分,共1分,少选、错选、多选均不得分) 1 已知一棵二叉树,如果先序遍历的节点顺序是:ADCEFGHB,中序遍历是:CDFEGHAB,则后序遍历结果为:(D) A.CFHGEBDA B.CDFEGHBA C.FGHCDEBA D.CFHGEDBA 2 下列哪两个数据结构,同时具有较高的查找和删除性能?(CD) A.有序数组 B.有序链表 C.AVL树 D.Hash表 3 下列排序算法中,哪些时间复杂度不会超过nlogn?(BC) A.快速排序 B.堆排序 C.归并排序 D.冒泡排序

4 初始序列为1 8 6 2 5 4 7 3一组数采用堆排序,当建堆(小根堆)完毕时,堆所对应的二叉树中序遍历序列为:(A) A.8 3 2 5 1 6 4 7 B.3 2 8 5 1 4 6 7 C.3 8 2 5 1 6 7 4 D.8 2 3 5 1 4 7 6 5 当n=5时,下列函数的返回值是:(A) [cpp] view plaincopy int foo(int n) if(n<2)return n; return foo(n-1)+foo(n-2);

A.5 B.7 C.8 D.1 6S市A,B共有两个区,人口比例为3:5,据历史统计A的犯罪率为.1%,B区为.15%,现有一起新案件发生在S市,那么案件发生在A区的可能性有多大?(C) A.37.5% B.32.5% C.28.6% D.(面试题目:什么样的工作环境适合你)26.1% 7Unix系统中,哪些可以用于进程间的通信?(BCD) A.Socket B.共享内存 C.消息队列 D.信号量 8 静态变量通常存储在进程哪个区?(C) A.栈区 B.堆区 C.全局区 D.代码区 9 查询性能(B) A.在Name字段上添加主键 B.在Name字段上添加索引

android面试题及答案

一选择题(可多选,30分) 1、关于BroadcastReceiver说法正确的是(AB) A、BroadcastReceiver有两种注册方式,静态注册和动态注册 B、Broadcast分正常广播和有序广播,其中有序广播可以被停止掉,不传给下一个接受者 C、Broadcast Receiver 提供了可视化的界面来显示广播信息 D、BroadcastReceiver的onReceive函数里可以使用线程来执行耗时的操作 2、关于Android dvm的进程和Linux的进程,应用程序的进程说法正确的是(D) A、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念. B、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux 中的一个进程,所以说不是一个概念. C、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux 中的一个进程,所以说不是一个概念. D、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念. 3 android 中下列关于Intent说法正确的是(C) A、实现应用程序间的数据共享 B、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失 C、可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带 D、处理一个应用程序整体性的工作 4 android 关于service生命周期的onCreate()和onStart()说法正确的是(AD) A、当第一次启动的时候先后调用onCreate()和onStart()方法 B、当第一次启动的时候只会调用onCreate()方法 C、如果service已经启动,将先后调用onCreate()和onStart()方法 D、如果service已经启动,只会执行onStart()方法,不在执行onCreate()方法 5.在异常处理中,如释放资源、关闭文件、关闭数据库等由( C)来完成。 A.try子句 B.catch子句 C.finally子句 D.throw子句 6.关于Collections说法正确的是(AC) A.Collections 包含有各种有关集合操作的静态多态方法 B.Collections是集合类的一个顶级接口, C.Collections 是一个包装类,此类不能实例化 D.List是Collections的子接口 7.关于java抽象类说法正确时是(AC)

腾讯面试题(有答案)

1. 1-20的两个数把和告诉A,积告诉B,A说不知道是多少, B也说不知道,这时A说我知道了,B接着说我也知道了,问这两个数是多少? 答案:2和3 2 爸爸,妈妈,妹妹,小强,至少两个人同一生肖的概率是多少? 1-12*11*10*9/12*12*12*12 = 1-55/96 = 41/96 3, 计算a^b << 2 答案: 运算符优先级:括号,下标,->和.(成员)最高; 单目的比双目的高; 算术双目的比其他双目的高; 位运算高于关系运算; 关系运算高于按位运算(与,或,异或);

按位运算高于逻辑运算; 三目的只有一个条件运算,低于逻辑运算; 赋值运算仅比, (顺序运算)高。 在此题中,位左移"<<" 优先级高于按位异或"^",所以b先左移两位(相当于乘以4), 再与a异或。 例如:当 a = 6; b = 4 时;则a^b<<2 = 22 4 如何输出源文件的标题和目前执行行的行数? 答案:printf("The file name: %d\n", __FILE__); printf("The current line No:%d\n", __LINE__); ANSI C标准预定义宏: __LINE__

__FILE__ __DATE__ __TIME__ __STDC__ 当要求程序严格遵循ANSI C标准时该标识符被赋值为1 __cplusplus__ 当编写C++程序时该标识符被定义 5 a[3][4]哪个不能表示a[1][1]: *(&a[0][0]+5) *(*(a+1)+1) *(&a[1]+1) *(&a[0][0]+4) 答案: *(&a[1]+1) a是数组的首地址,a[1]就表示a[1][0]地址了,不用再取地址了。 6 fun((exp1,exp2),(exp3,exp4,exp5))有几个实参? 答案:两个。

Android面试题-带答案

1.介绍一下Android系统的体系结构 答:应用层:android的应用程序通常涉及用户界面和交互。 应用框架层:UI组件、各种管理器等。 函数库层:系统C库、媒体库、webkit、SQLite等。 linux核心库:linux系统运行的组件。 2.Android的四大组件是哪些,它们的作用? 答:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期及一些跳转逻辑 service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事物,定义好需要接受的Intent提供同步和异步的接口 Content Provider:是Android提供的第三方应用数据的访问方案,可以派生Content Provider类,对外提供数据,可以像数据库一样进行选择排序,屏蔽内部数据的存储细节,向外提供统一的借口模型,大大简化上层应用,对数据的整合提供了更方便的途径 BroadCast Receiver:接受一种或者多种Intent作触发事件,接受相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播模型 3.请介绍下Android的数据存储方式。 答:一.SharedPreferences方式 二.文件存储方式 三.SQLite数据库方式 四.内容提供器(Content provider)方式 五. 网络存储方式 4.说说mvc模式的原理 答:mvc是model,view,controller的缩写,mvc包含三个部分: 模型(model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。 视图(view)对象:是应用程序中负责生成用户界面的部分。也是在整个mvc架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。 控制器(control)对象:是根据用户的输入,控制用户界面数据显示及更新model对象状态的部分,控制器更重要的一种导航功能,响应用户出发的相关事件,交给m层处理。 5.如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态? 答:重写onSaveInstanceState()方法,在此方法中保存需要保存的数据,该方法将会在activity被回收之前调用。通过重写onRestoreInstanceState()方法可以从中提取保存好的数据

腾讯程序员笔试题及答案

腾讯程序员笔试题及答案 腾讯是国内数一数二的IT企业了。那么每年想要进入腾讯公司的应聘者也是络绎不绝。那么一个好的笔试答卷绝对是脱颖而出的亮点。现在就来看看腾讯笔试题都有哪些内容吧。 腾讯笔试题:const的含义及实现机制 const的含义及实现机制,比如:const int i,是怎么做到i只 可读的? const用来说明所定义的变量是只读的。 这些在编译期间完成,编译器可能使用常数直接替换掉对此变量 的引用。 更多阅读: .92ask./Archive/?action=show&id=18 初探编译器static、const之实现原理 腾讯笔试题:买200返100优惠券,实际上折扣是多少?

到商店里买200的商品返还100优惠券(可以在本商店代替现金)。请问实际上折扣是多少? 由于优惠券可以代替现金,所以可以使用200元优惠券买东西,然后还可以获得100元的优惠券。 假设开始时花了x元,那么可以买到 x + x/2 + x/4 + ...的东西。所以实际上折扣是50%.(当然,大部分时候很难一直兑换下去,所以50%是折扣的上限) 如果使用优惠券买东西不能获得新的优惠券,那么 总过花去了200元,可以买到200+100元的商品,所以实际折扣为 200/300 = 67%. 腾讯笔试题:tcp三次握手的过程,aept发生在三次握手哪个阶段? aept发生在三次握手之后。 第一次握手:客户端发送syn包(syn=j)到服务器。

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个ASK包(ask=k)。 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1)。 三次握手完成后,客户端和服务器就建立了tcp连接。这时可以调用aept函数获得此连接。 腾讯笔试题:用UDp协议通讯时怎样得知目标机是否获得了数据包 用UDp协议通讯时怎样得知目标机是否获得了数据包? 可以在每个数据包中插入一个唯一的ID,比如timestamp或者递增的int。 发送方在发送数据时将此ID和发送时间记录在本地。 接收方在收到数据后将ID再发给发送方作为回应。

Android Java面试笔试题

Android Java笔试题(带大部分答案) 请将试题答在答题卡上,不要在试卷中做任何标记 一、基础题: 1. 1. 请写出输出结果 public class Test1 { public static void changeStr(String str){ str=”welcome”; } public static void main(String[] args) { String str=”1234″; changeStr(str); System.out.println(str); } } ___”1234″____________________________________________________ 1. 2. 请写出输出结果 public class Test2 { static boolean foo(char c) { System.out.print(c); return true; } public static void main(String[] argv) { int i = 0; for (foo(…A?); foo(…B?) && (i < 2); foo(…C?)) { i++; foo(…D?); } } } _____ABDCBDCB___________________________________________________ 1.class A {

protected int method1(int a, int b) { return 0; } } 以下A扩展类中的方法哪两个是正确的:(选择两个) A.public int method1(int a, int b) { return 0;} B.private int method1(int a, int b) { return 0;} C.private int method1(int a, long b) { return 0;} D.public short method1(int a, int b) { return 0;} E.static protected int method1(int a, int b) { return 0;} ____AD___________________________________________________ 1.public class Outer{ public void someOuterMethod() { // Line 3 } public class Inner{} public static void main(String[] args) { Outer o = new Outer(); // Line 8 } } 下列哪一个对Inner类实例化的描述是正确的?D A.new Inner(); // At line 3 B.new Inner(); // At line 8 C.new o.Inner(); // At line 8 D.new Outer.Inner(); // At line 8//new Outer().new Inner() 1. 5. 下面这个程序正确吗? 如果不正确请说出哪里错误。 public class Something { public static void main(String[] args) { Other o = new Other(); new Something().addOne(o); } public void addOne(final Other o) { o.i++;

Android开发笔试题.docx

Android 应用开发笔试 姓名 :_____________联系电话:_____________得分:_____________ 共100分,考试时间40 分钟 一、选择题(30题,每题 1.5 分,共45分 ) A 、输入流和输出流B、字节流和字符流C、节点流和处理流 D 、File stream E、 Pipe stream F、Random stream 2. 下列代码的执行结果是:() public class Test3{ public static void main(String args[]){ } G、 Filter stream } B、 A 、1,1B、 1,1.0 C、 1.0,1 D 、1.0,1.0盖。 3.在继承中,关于构造方法的说明,下列说法错误的是() C、子类无条件的继承父类的无参构造方法, D、子类可以引用父类中的有参构造方法,使用super 关键字, E、如果子类没有构造方法,则父类无参构造方法作为自已的构造方法, F、如果子类有无参构造方法,而父类的无参构造方法则被覆盖。 4.以下程序的运行结果为 ( ) public class IfTest{ public static void main(String args[]){ int x=3; int y=1; if(x==y) else } } A 、 Not equal B、Equal C、无输出 D 、编译出错 5.Java语言中字符串“学Java ”所占的内存空间是() A. 6个字节 B. 7个字节 C. 10个字节 D. 11个字节 6.Java语言中 A. 1,2,4,4,4,8byte 、short、int、float、double、long B.1,2,48,8,8 C.1,1,4,4,8,8 D.1,2,4,4,8,8 分别是几个字节() 7. 关于下列程序段的输出结果,说法正确的是:() public class MyClass{ static int i; public static void main(Stringargv[]){ } } A 、有错误,变量i 没有初始化。B、null C 、 1 D 、 0 8.下列哪些语句关于内存回收的说明是正确的? () A 、程序员必须创建一个线程来释放内存

android面试题关于ui四大主键

笔试一般都是java基础 Java知识点包括:接口与抽象的使用及区别,多线程,socket基础,集合类,也有个别公司考察定义,很无语。 这里具体说一下android面试题目: 南京WSCX: 1、 Activity的生命周期,两个Activity之间跳转时必然会执行的是那几个方法? 生命周期:oncreate onStart onStop onPause onResume onDestory OnPause onCreate onStart onstop onResume 2、 不用service,B页面为音乐播放,从A跳转到B,再返回,如何使音乐继续播放? B的Mediaplay.get(播放歌曲,播放时间)保存到intent A if(播放歌曲&&播放时间有值) { MediaPaly(ss,dd); } 3、 Service有哪些启动方法?有什么区别? Service的启动方法有onstartServivr onbindService Start方法是先调用oncreate onstart 但是如果最后不调用onstop方法那么就算是activity 呗回收了也还是会运行 但是bind 是先后调用oncreate onbind 如果不调用onstop放法那么在activity被回收的时候就会被关闭 4、 (音乐播放器)如何加载的音乐信息,如何改善其效率。 构造SimpleAdapter - ListView 5、 电话状态的监听,改变打电话界面(听说我改动的Phone源码就不再问了)。 6、 ListView如何提高其效率? 7、 还有一些都是在上面的基础上扩展的,跟具体项目有关,就不说了。 总结:他们只是问一问这些基础的知识,都是给外包公司招人,自己做不了主,也就是检验一下应聘人员懂不懂android。 南京SL: 1、 启动一个程序,可以主界面点击图标进入,也可以从一个程序中跳转过去,二者有什么区别?2、 启动一个Activity有哪几种方法? Intent intent = new Intent(this,FirstActivity.class)

相关文档