武汉腾讯会议Android面试题

1.数组和链表的区别

(1)数组的元素个数是固定的,而组成链表的结点个数可按需要增减;

(2)数组元素的存诸单元在数组定义时分配,链表结点的存储单元在程序执行时动态向系统申请;

(3)数组中的元素顺序关系由元素在数组中的位置(即下标)确定,链表中的结点顺序关系由结点所包含的指针来体现。

(4)对于不是固定长度的列表,用可能最大长度的数组来描述,会浪费许多内存空间。

(5)对于元素的插人、删除操作非常频繁的列表处理场合,用数组表示是不适宜的。若用链表实现,会使程序结构清晰,处理的方法也较为简便。

数组的优点
随机访问性强

查找速度快

数组的缺点
插入和删除效率低

可能浪费内存

内存空间要求高,必须有足够的连续内存空间。

数组大小固定,不能动态拓展

链表的优点
插入删除速度快

内存利用率高,不会浪费内存

大小没有固定,拓展很灵活。

链表的缺点
不能随机查找,必须从第一个开始遍历,查找效率低

2.Hashmap实现原理

1、map.put(k,v)实现原理
(1)首先将k,v封装到Node对象当中(节点)。
(2)然后它的底层会调用K的hashCode()方法得出hash值。
(3)通过哈希表函数/哈希算法,将hash值转换成数组的下标,下标位置上如果没有任何元素,就把Node添加到这个位置上。如果说下标对应的位置上有链表。此时,就会拿着k和链表上每个节点的k进行equal。如果所有的equals方法返回都是false,那么这个新的节点将被添加到链表的末尾。如其中有一个equals返回了true,那么这个节点的value将会被覆盖。


2、map.get(k)实现原理
(1)先调用k的hashCode()方法得出哈希值,并通过哈希算法转换成数组的下标。
(2)通过上一步哈希算法转换成数组的下标之后,在通过数组下标快速定位到某个位置上。如果这个位置上什么都没有,则返回null。如果这个位置上有单向链表,那么它就会拿着K和单向链表上的每一个节点的K进行equals,如果所有equals方法都返回false,则get方法返回null。如果其中一个节点的K和参数K进行equals返回true,那么此时该节点的value就是我们要找的value了,get方法最终返回这个要找的value。

相比 jdk1.7 的 HashMap 而言,jdk1.8最重要的就是引入了红黑树的设计,当hash表的单一链表长度超过 8 个的时候,链表结构就会转为红黑树结构。
为什么要这样设计呢?好处就是避免在最极端的情况下链表变得很长很长,在查询的时候,效率会非常慢。

  • 红黑树查询:其访问性能近似于折半查找,时间复杂度 O(logn);
  • 链表查询:这种情况下,需要遍历全部元素才行,时间复杂度 O(n);

3.TCP和UDP的区别,那个速度更快

TCP的优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。 TCP的缺点: 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。 而且,因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。

UDP的优点: 快,比TCP稍安全 UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些。但UDP也是无法避免攻击的,比如:UDP Flood攻击…… UDP的缺点: 不可靠,不稳定 因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。 基于上面的优缺点,那么: 什么时候应该使用TCP: 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。 在日常生活中,常见使用TCP协议的应用如下: 浏览器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ文件传输 ………… 什么时候应该使用UDP: 当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。 比如,日常生活中,常见使用UDP协议的应用如下: QQ语音 QQ视频 TFTP ……

有些应用场景对可靠性要求不高会用到UPD,比如长视频,要求速率

小结TCP与UDP的区别:

1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.流模式与数据报模式 ;

5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

tcp协议和udp协议的差别 
           TCP           UDP 
是否连接     面向连接     面向非连接 
传输可靠性   可靠        不可靠 
应用场合    少量数据    传输大量数据 

速度       慢         快

TCP与UDP区别总结:

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付

3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的

UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)

4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

4.Http报文头所包含的内容

1.通用首部
通用首部字段(General Header Fields)请求报文和响应报文两方都会使用的首部。

Cache-Control:用来声明服务器端缓存控制的指令。包括请求设置指令和响应请求指令。

请求控制指令如下。

no-cache:不使用缓存实体,要求从 Web 服务器去请求内容。
max-age:只接受 Age 值小于 max-age 值的内容,即没有过期的请求对象。
max-stale:可以接受过去的对象,但是过期时间必须小于 max-stale 值。
min-fresh:接受生命期大于其当前 Age 跟 min-fresh 值之和的缓存对象。
响应控制指令如下。

public:可以用 Cache 中内容回应任何用户。
private:只能用缓存内容回应先前请求该内容的具体用户。
no-cache:可以设置哪些内容不被缓存。
max-age:设置响应中包含对象的过期时间。
ALL: no-store 不允许缓存。
Connection:在请求头中,close 告诉 Web 服务器或者代理服务器,在完成本次请求响应后断开连接,无须等待本次连接的后续请求,keep-alive 告诉 Web 服务器或者代理服务器,在完成本次请求响应后保持连接,等待本次连接的后续请求。在响应头中,close 连接已关闭。keep-alive 保持连接,等待本次连接的后续请求,如果浏览器请求保持连接,则该头部表明希望 Web 服务器保持连接的时长(秒),例如,keep-alive:300。

2.请求首部
请求首部字段(Request Header Fields)从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息。

Accept:告诉 Web 服务器自己能接收什么媒体类型,/ 表示能接收任何类型,type/* 表示接收该类型下的所有子类型,一般格式为 type/sub-type,多个类型使用 q 参数分割,q 的值代表 quality 请求质量,反映了用户对这类媒体类型的偏好程度,例如 Accept: text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c。

Accept-Charset:浏览器接收内容的字符集,通常是 utf-8。

Accept-Encoding:浏览器接收内容的编码方法,例如指定是否支持压缩,若支持压缩的话支持什么压缩方法,具体如 Accept-Encoding:gzip, deflate, sdch。

Accept-Language:浏览器接收内容的语言。语言跟字符集是有区别的,例如中文是语言,中文有多种字符集,big5、gb2312、gbk 等。该参数也可以设置多个,如 Accept-Language: zh-CN,zh;q=0.8。

Authorization:当客户端接收到来自 Web 服务器的 WWW-Authenticate 响应时,后面可以用该头部来携带自己的身份验证信息给 Web 服务器直接进行认证。

3.响应首部
响应首部字段( Response Header Fields)从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。

Accept-Ranges:Web 服务器表明自己是否接受获取某个实体的一部分(比如文件的一部分)请求,这里主要用于部分文件传输,实际上我们用的比较少。bytes 表示接受传输多大长度内容,none 表示不接受。

Age:一般当服务器用自己缓存的实体去响应请求时,可以用该头部表明实体从产生到现在经过了多长时间,如 Age: 3600。

Etag:对象(比如 URL)的标志值。一个对象(如 HTML 文件)如果被修改了,其 Etag 也会被修改,所以 Etag 的作用和 Last-Modified 差不多,主要供 Web 服务器判断一个对象是否改变。例如前一次请求某个 HTML 文件时获得了其 Etag,当这次又请求该文件时,浏览器就会把先前获得的 Etag 值发送给 Web 服务器,然后 Web 服务器会将这个 Etag 值跟该文件当前的 Etag 值进行对比,判断文件是否改变。

4.实体首部
实体首部字段(Entity Header Fields)针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。

Allow:该参数头部可以设置服务端支持接收哪些可用的 HTTP 请求方法,例如 GET、POST、PUT,如果不支持,则会返回 405(Method Not Allowed)。

Content-Encoding:与请求头的 Accept-Encoding 对应,指 Web 服务器表明使用何种压缩方法(gzip,deflate)压缩响应中的对象,例如,Content-Encoding:gzip。

Content-Language:与请求头中的 Accept-Language 对应,Web 服务器告诉浏览器响应的媒体对象语言。

Content-Length:Web 服务器告诉浏览器 HTTP 请求内容的长度。例如,Content-Length: 1024。

Content-Range:Web 服务器表明该响应包含的部分对象为整个对象的哪个部分。

Content-Type:与请求头的 Accept 对应,指明 Web 服务器告诉浏览器响应的对象的类型。例如,Content-Type:application/xml。
 

5.Handler底层原理

6.Binder底层原理

7.Glide实现原理

8.APP性能优化

9.Flutter/React Native底层原理

10 .有哪几种引用,有什么区别

11 .线程同步的方法,有什么区别,怎么避免死锁

12.进程和线程的区别

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 腾讯android社招面试题除了要求基本的编程基础外,更加注重应聘者的思路和解决问题的能力。例如,有一道题目是让应聘者解决一个弹球游戏的碰撞问题,考察了应聘者对物理学原理的了解程度和建模思维的能力。而另外一道题则是要求应聘者自己设计一个数据结构,并写出相关的代码,考察了应聘者对数据结构的掌握程度以及解决实际问题的能力。 此外,腾讯面试也注重应聘者的团队合作能力,例如会询问应聘者过往参与的项目经历以及其中的角色和职责。面试官还会关注应聘者平时的兴趣爱好和学习方式,看重自我发展和持续学习的态度。 总的来说,腾讯android社招面试注重应聘者的思考方式和解决问题的能力,希望应聘者能够在面试中展现出技术实力的同时也能够体现出比较全面的素质和团队合作技巧。 ### 回答2: 首先,我认为腾讯是一家非常优秀的公司,成熟的技术、稳定的业务、开放的文化及良好的薪酬待遇,这些都是我希望所在公司所具备的。当然,现如今,安卓技术在移动互联网领域已经越来越普及,所以我对腾讯Android社招面试也充满期待。 鉴于腾讯一贯的严谨和高要求,我认为其社招面试中会涉及到个人技能、团队协作能力、沟通能力及学习能力等,且可能会采用多种形式的测试与考核方式,如笔试、技术面试、项目经历考核等。而我会尽最大努力,从细节和思路等方面准备自己,积极展示自己的能力和素养,在适当的时候提问与反问,来表现出自己的个性魅力和职业素养。总之,我会以最好的状态去应对腾讯Android社招面试,尽我所能去展现自己,来赢得这个职位的机会。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值