面试记录总结(今日头条面试)

今日头条面试

总的来说一面还是比较简单,招实习生可能会放宽条件吧,不过有的概念的细节还需要注意,并且要能将相关的知识点串起来,做对比记忆。

总得来说答得还可以吧,问得很基础,面试也是个查漏补缺的过程,算法比重很大,需要好好学习一下。

这是我记录的题目:

一.MySql和Redis有什么区别吗?

mysql是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度较慢。
redis是NOSQL,即非关系型数据库,也是基于Key-Value的缓存数据库,即将数据存储在缓存中,缓存的读取速度快,能够大大的提高运行效率,但是保存时间有限

二.Redis崩溃了,怎么办?

我觉给面试官说我在投票功能里用到了缓存,每次从缓存里查找用户投票的次数,达到5票的不能再继续投票。于是他问我,如果缓存崩了怎么办,我说我已经持久化到了数据库里。
但现在想想,他应该是有别的意思,我觉得应该是想让我说分布式缓存的一些内容,比如主从复制这样的东西,分布式缓存架构这方面还是需要再看看的,这里明显答得不是很好。

三.tcp和udp的区别

这道题直接凉了,计算机网络当年考了96分,现在全还给老师了。。就说出了三次握手。。

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付

Tcp通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。

3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。

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

5、TCP对系统资源要求较多,UDP对系统资源要求较少。

为什么UDP有时比TCP更有优势?

UDP以其简单、传输快的优势,在越来越多场景下取代了TCP,如实时游戏。

(1)网速的提升给UDP的稳定性提供可靠网络保障,丢包率很低,如果使用应用层重传,能够确保传输的可靠性。

(2)TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程,由于TCP内置的系统协议栈中,极难对其进行改进。

采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大,基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成影响。

4.hashmap是如何扩容的

这个就比较熟悉了,于是跟面试把hashmap的底层原理也讲了一遍,省得他追问我了。

HashMap是用数组加链表的形式实现的,通过hash找到存放的位置,通过equal判断key的内容是否相同。由于hash值可能一样,所以数组上会有一个链表,链表上存放多个键值对,判断是否相同的时候要用equal。

Hashmap的扩容,默认大小是16,扩容是直接翻倍,大小都是2的幂次方,这样做是为了能够直接用位运算进行取模运算,比除法取模要快。

Hashtable的扩容,默认是11,增长方式是2n+1,大小都是素数,素数的好处是在取模的时候会比较均匀,但是只能通过除法取模,不能通过位运算取模,除法取模没有位运算取模速度快。

5.悲观锁和乐观锁

这不就撞枪口了,我就会背这个!

悲观锁,做事悲观,总觉得有人会在自己修改数据的时候,跟自己一起修改。那么就加锁,使当前任务做完之后,才能进行下一个任务,有个同步关键字就是按照这个想法实现的,事务也是。

乐观锁,做事乐观,那么就不加锁,而是通过查看数据版本号判断是否修改,CAS就是一种实现方式。

6.原子性怎么实现

CAS实现了原子性

7.用两个栈实现一个队列

先让数全进A栈,然后A全出栈到B,然后B出栈。

8.二分查找算法的实现

记录中间值

9.hashmap和二分查找的复杂度

HashMap:O(1)
二分查找:O(logn)

10.有序数组为什么用二分快,而不用hashmap,明明hashmap的复杂度更低

因为初始化hashmap会消耗系统资源

11.二分查找算法实现,如果数组是[7,8,9,1,2,3,4,5]这样不是全部有序的情况,如何实现?

也是用二分法,判断一下单调性,然后不单调的地方用递归。

12.Mysql怎么优化查询?
索引、联接、分页(不全,我再总结总结)

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值