面试android的时候面试官提问"对网络通信协议熟悉吗?对socket和http了解吗?能解释下吗?",跪求帮助
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试android的时候面试官提问"对网络通信协议熟悉吗?对socket和http了解吗?能解释下吗?",跪求帮助相关的知识,希望对你有一定的参考价值。
我其实对面试官提问的内容还是有些理解和基础的,但是我就是不知道该如何组织语言回答他。
请给位大侠帮帮忙,如果你在面试中会如何回答或者你面试其他人的时候想听到什么样的答案会满意呢??
套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。
应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个
TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket 。
套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。
服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。
客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
HTTP协议即超文本传送协议(Hypertext Transfer Protocol
),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。
HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
1)在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接。
2)在HTTP
1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。
由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的做法是即时不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。
由于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致
Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。
而HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。
很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方建立的是Socket连接,服务器就可以直接将数据传送给客户端;若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。 参考技术A
1, 网络通信协议为连接不同操作系统和不同硬件体系结构的互联网络引提供通信支持,是一种网络通用语言。目前,局域网中常用的通信协议主要有:NetBEUI协议、IPX/SPX兼容协议和TCP/IP协议。
2,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
3,http 超文本传输协议
参考技术B 就把你知道的告诉面试官,在这里给你编好了针对这个问题的,下面面试官让你展开下某个点,你要是不理解还是展不开,所以面试一定要基于自己理解的会的基础上,瞎编乱造使不得面试的流程
电话面试
应聘者在投出简历之后的一两个星期,要保证手机电池至少连续通话一小时。另外应聘者不要长时间待在很嘈杂的地方。如果应聘者身在闹市的时候突然接到电话,那么双方就有可能因为听不清对方而倍感尴尬
如果应聘者在面试的时候没有听清面试官的问题,则千万不要不懂装懂,答非所问,这是面试大忌。当不确定面试官的问题的时候,应聘者一定要大胆地向面试官多提问,直到弄清楚面试官的意图为止
共享桌面远程面试
共享桌面远程面试是指利用一些共享桌面的软件讲自己电脑桌面共享给远程面试官。
这种形式面试,面试官最关心的是应聘者的编程习惯以及调试能力。通常面试官会认可应聘者一下几个编程习惯
- 思考清楚再编码。应聘者应该先想清楚解决问题的思路,如算法的空间、时间复杂度各是什么,有哪些特殊情况需要处理等,然后再动手编写代码
- 良好的代码命令和缩进对齐习惯。一目了然的变量和函数名,加以合理的缩进和括号对齐,会让面试官觉得应聘者有参与大型项目的开发经验。
- 能够进行单元测试。如果应聘者先写出单元测试用例,再写解决问题的方法,面试官会对你刮目相看,因为能做到测试在前,开发在后的程序员实在太稀缺了。
现场面试
- 规划好路线并估算出行时间。如果面试迟到,那至少印象分会大打折扣
- 准备好得体的衣服。一般舒服干净的衣服就行
- 注意面试邀请函里的面试流程。
- 准备几个问题。面试官一般会让应聘者问几个问题,可以提前准备。
面试的三个环环节
行为面试环节
不少面试官会让应聘者做一个简短的自我介绍,30秒到1分钟的时间介绍自己的主要学习,工作经历即可。
1. 应聘者的项目经验
应聘者自我介绍之后,面试官会对照简历去详细了解他感兴趣的项目。应聘者在准备简历的时候,建议用STAP模型描述自己经历过的每一个项目。
- 简短的项目背景。比如项目的规模,开发软件的功能,目标用户等。
- 自己完成的任务。这个要写详细,要让面试官对自己的工作一目了然。
- 为了完成任务自己做了哪些工作,是怎么做的。这里可以详细介绍。做系统设计的,可以介绍系统架构的特点,做软件开发的,可以写基于什么工具那个平台下用了哪些技术,做软件测试的可以写自动化测试还是白盒、黑盒。
- 自己的贡献。这方面信息可以写的具体些,最好能用数字加以说明。如果是参与功能开发,就可以写按时完成了多少功能。如果是做优化,则可以说性能提高的百分比是多少。如果是维护,则可以说修改了多少个bug。
如果应聘者在简历中上述四类信息还不够清晰,则面试官可能还会追问相关的问题。除此之外针对项目经验最常见的问题包括如下几个方面。
- 你在该项目中碰到的最大的问题是什么,你是怎么解决的?
- 从这个项目中你学到了什么?
- 什么时候会和其他团队成员有什么冲突,你们是怎么解决冲突的?
2. 应聘者掌握的技能
描述技能掌握程度时也要注意“了解”、“熟悉”和“精通”的区别
“了解”,指对某项技术只是上过课或者看过书,但没有做过实际的项目。
"熟悉",在实际项目中使用某项技术已经有较长时间。
“精通”,能够轻松回答这个领域里的绝大多数问题。
3. 回答什么跳槽
应聘者尽量避免以下四个原因:
- 老板太苛刻。如果面试官就是当前招聘职位的老板,那么当他听你抱怨现在老板太苛刻,那么就会觉得接下来你也会抱怨他。
- 同事太难相处。如果应聘者说他周围有很多很难相处的同时,则面试官很有可能觉得这个人本身就很难相处。
- 加班太频繁。这个懂的都懂
- 工资太低。虽然现在大部分人跳槽是因为这个,但是不建议在面试的时候对面试官抱怨。面试的目的是拿到offer,要尽量留下好印象。面试不是谈工资的时候,等技术面试完之后谈offer时在跟HR谈工资也不迟。通过面试之后我们就掌握了主动权,这时候谈工资更有优势。
技术面试环节
面试小提示
面试官出来希望应聘者的代码能够完成基本的功能,还会关注应聘者是否考虑了边界条件,特殊输入(入null指针)及错误处理
以上是关于面试android的时候面试官提问"对网络通信协议熟悉吗?对socket和http了解吗?能解释下吗?",跪求帮助的主要内容,如果未能解决你的问题,请参考以下文章