Android 面试(一)

1、谈谈堆和栈的区别?

  栈(Stack)由编译器分配释放,存放函数的参数值、局部变量值等,操作方式同数据结构中的栈(先进后出)。

  堆(Heap)一般由程序员分配,若程序员不释放,程序结束后由os回收,它和数据结构中的堆是两回事,分配方式确和链表类似。

  数据结构中的堆采用的是数组对象而不是链表,可视为完全二叉树,特点是父结点大于(或小于)两个子结点的值(称为大顶堆或小顶堆)。

  满二叉树:除最后一层无任何子结点外,每一层的所有结点都有两个子结点,简言之就是二叉树的每一层都满了;

    性质:<1> 深度h(所有结点中最深的结点所在的层数[根节点是第一层])= 最大层数K

       <2> 叶子结点数(第K的的结点数)为2h(k)-1

       <3> 总结点数是 2k-1,且总结点数一定是奇数

  完全二叉树:若二叉树的深度为h,出第h层外,其他【1-(h-1)】层的结点数都达到了最大数,且第h层所有结点都连续集中在左边。

  结点的度:该结点所含的子树的个数。

  二叉树的度:二叉树中所含子树最多的那个结点。

2、谈谈两台机器间最多能建立多少个持久链接及原因?

  一个特定的连接我们会用同一个端口号来标识,所以最大连接数不会超过机器能指定的端口数目。  

  持久连接,指不必为每个request object(例如很小的gif广告图像)的传送建立一个新的TCP(socket)连接,减少TCP建立时间和相应的系统损耗。

  在使用持久连接之前,HTTP规定获取每个URL资源都需要使用单独的一个TCP连接,这增加了HTTP服务端的负载,造成互联网拥塞。

  使用持续连接的优点:

    <1>减少TCP连接数量;

    <2>在一个连接上实现了HTTP请求和应答的流水,即允许客户端发送多个请求,而不用在接收到前一个请求的应答后才发送下一条请求,极大减少时间消耗; 

    <3>后续请求延迟减少,无需在TCP握手是耗时,可以更加流畅的实现HTTP协议,由于持续连接的存在,报告错误后无需关闭连接,因此客户端可使用最新的协议特性发出请求,如果接收到表示错误的应答,则换用更旧的语义。

3、谈谈对 http、https、webSocket 协议的理解?

  http:超文本传输协议,是网络上使用最广泛的一种网络协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。所有WWW文件都必须遵守这个标准,这个协议设计的最初目的是为了提供一种发布和接收HTML页面的方法。

  优点:<1>简单快捷:客户端向服务器传送数据只需要传送请求方法和路径,常见的请求方法有Post、Get。每一种方法规定了服务器和客户联系的类型不同。由于协议简单,使服务器程序规模较小,通信快。

       <2>灵活:HTTP协议允许传输任意的类型的数据对象。正在传输的类型由Content-Type加以标记。

     <3>无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

     <4>无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

    <5>支持B/S及C/S模式。

 缺点:<1>通信使用明文(不加密),可能被窃听。

    <2>不验证通信方的身份,有可能遭遇伪装。

    <3>无法验证报文的完整度,有可能被篡改。  

  HTTPS:以安全为目标的HTTP通道,简言之就是HTTP安全版。它解决了HTTP易窃听、易伪装、易篡改的确定。公式表达:HTTPS = HTTP + 加密 + 认证 + 完整性保护。

  WEBSOCKET协议:是HTML5提出的一个协议规范,约定了一种通信的规范,通过握手机制,客户端和服务器之间建立一个类似TCP的连接,方便C-S之间的通信。在这之前Web交互一般是基于HTTP协议的短连接或长连接。WEBSOCKET协议本质上是一个基于TCP的协议,是先通过HTTP/HTTPS协议发起一条特殊的http请求进行握手后创建一个用于交换数据的TCP连接,此后服务端与客户端通过此TCP连接进行实时通信。

  

  

时间: 2024-10-11 20:55:16

Android 面试(一)的相关文章

转:Android面试

http://blog.csdn.net/singwhatiwanna/article/details/49230997 可以说是对android知识的总结,列在这里了.上面的博文地址里有详细介绍,感兴趣可以仔细阅读. 基本知识点.深入知识点.基本知识点的细节和系统核心机制. 1. 基本知识点 比如四大组件如何使用.如何创建Service.如何进行布局等.这类知识是需要熟练掌握的,并且也没什么难度. 2. 稍微深入的知识点 比如AIDL.Binder.多进程.View的绘制流程.事件分发.消息队

Android面试知识点(转)

该文所有问题转自:http://www.cnblogs.com/hpboy/p/3307371.html 一.算法,数据结构 1.排序算法 2.查找算法 3.二叉树 4.广度,深度算法: 二.java基础 1.集合Collection,List,Map等常用方法,特点,关系: 2.线程的同步,中断方式有几种,线程池,线程状态,常用的方法比较,比如wait,sleep等: 3.反射机制 4.IO包的使用,运用了什么设计模式 5.设计模式,常用的设计模式,运用场景: 6.内存管理,引用的种类: 7.

Android面试总结经

自上周怒辞职以后,就开始苦逼的各种面试生涯,生活完全靠私活来接济,时有时没有,真难,还能快乐的玩耍吗,最多一天面试了5家,哎感觉都是不急招人,各种等待通知,好不容易等来一家,还克扣了薪资,从我要的12k到他们给8k,感觉累觉不爱. 面试都是基本过了二面的,大到腾讯,阿里,百度,网易,小到15人的创业公司我都去了,难得今天休息一下,总结下面试经验,以便下次面试用到.技术题目我就不说了,这是基础,不会的还是把基础看下吧.后面的题目都是让人蛋疼的机制问题. 1.什么是线程,线程和进程的区别,线程的工作

【Android进阶】Android面试题目整理与讲解

这一篇文章专门整理一下研究过的Android面试题,内容会随着学习不断的增加,如果答案有错误,希望大家可以指正 1.简述Activity的生命周期 当Activity开始启动的时候,首先调用onCreate(),onStart(),onResume()方法,此时Activity对用户来说,是可见的状态 当Activity从可见状态变为被Dialog遮挡的状态的时候,会调用onPause()方法,此时的Activity对用户可见,但是不能相 应用户的点击事件 当Activity从可见状态变为被其他

Android面试题目2

1. 请描述下Activity的声明周期. onCreate->onStart->onRemuse->onPause->onStop->onRestart->onDestroy 2. 如果后台的Activity由于某种原因被系统回收,如何在回收之前保存当前状态.onSaveInstanceState().程序中的某一个Activity A 在运行时,主动或被动的运行另一个新的Activity B,这个时候A会执行onSaveInstanceState().B完成以后又回

今天的android面试总结

今天早上去一家公司面试android开发,现在总结一下 首先,这家公司没有笔试环节,而是直接和技术面试官面谈.面试官问我有没有带简历,我说没带.然后他就叫我等一下,估计是打印我的简历去了. 不一会,一共两位技术面试官进来,其中一个进来后直接叫我把我的项目作品展示给他看,连自我介绍都不用了.够直接,好,那我就打开我的应用给他看 他就针对这个项目说你这个是怎么实现的,那个又是怎么实现的.我就说这个是用viewpager,那个是用slidingmenu什么的..他还问到你这个图片加载是怎么实现的,我说

【Android 面试基础知识点整理】

针对Android面试中常见的一些知识点整理,Max 只是个搬运工,感谢本文中引用文章的各位作者,给大家分享了这么多优秀文章,对于其中的解析,是原作者个人见解,有错误和不准确的地方,也请大家积极指正. 本文将持续更新,同时我也将其放在Github上:Point-of-Android 同时可以看Max的个人博客:海上钢琴师 Android中的异步任务机制 Android中AsyncTak的使用与源码分析 http://blog.csdn.net/bboyfeiyu/article/details/

【Android进阶】Android面试题目整理与讲解(二)

今天真机调试的时候莫名其妙遇到了这样的一个问题: This product type must be built using a provisioning profile, however no provisioning profile matching both the identity "iPhone Developer" and the bundle identifier..... 具体如下图所示: 十分蛋疼, 发现不管是从网上下的demo, 还是自己的过程.凡事真机测试的时候都

【Android进阶】Android面试题目整理与讲解(一)

这一篇文章专门整理一下研究过的Android面试题,内容会随着学习不断的增加,如果答案有错误,希望大家可以指正 1.简述Activity的生命周期 当Activity开始启动的时候,首先调用onCreate(),onStart(),onResume()方法,此时Activity对用户来说,是可见的状态 当Activity从可见状态变为被Dialog遮挡的状态的时候,会调用onPause()方法,此时的Activity对用户可见,但是不能相 应用户的点击事件 当Activity从可见状态变为被其他

Android面试总结 (转)

1. 下列哪些语句关于内存回收的说明是正确的? (b) A. 程序员必须创建一个线程来释放内存 B. 内存回收程序负责释放无用内存 C. 内存回收程序允许程序员直接释放内存 D. 内存回收程序可以在指定的时间释放内存对象 2. 下面异常是属于Runtime Exception 的是(abcd)(多选) A.ArithmeticException B.IllegalArgumentException C.NullPointerException D.BufferUnderflowException