java正则表达式提取字符串中的序号,通用流行框架大全

这篇博客总结了华为面试中的关键知识点,包括Java正则表达式提取字符串序号,深入探讨了Redis的淘汰策略、MySQL的锁机制以及数据结构中的跳表。此外,还讨论了IO模型、乐观锁与悲观锁,并介绍了避免缓存穿透和雪崩的策略。
摘要由CSDN通过智能技术生成

前言

今天逛论坛,看到了一位35岁的老程序员发的博文,看完内容后我又活了,35岁挑战华为社招,竟然凭实力在半个月内经历4轮面试后成功拿到了offer,不得不佩服这位大哥,35岁还这么强我们这些后辈还怕啥!

当然重要的是这位程序员大佬最后总结的华为4轮面试所有的面试题和需要注意的事情。所以结合这个老哥面试问的问题和最近华为最新的面试题,重新整理了一下近期华为的面试题,满满干货,分享给大家。
在这里插入图片描述

阻塞IO

我们知道在调用某个函数的时候无非就是两种情况,要么马上返回,然后根据返回值进行接下来的业务处理。当在使用阻塞IO的时候,应用程序会被无情的挂起,等待内核完成操作,因为此时的内核可能将CPU时间切换到了其他需要的进程中,在我们的应用程序看来感觉被卡主(阻塞)了。

非阻塞IO

当使用非阻塞函数的时候,和阻塞IO类比,内核会立即返回,返回后获得足够的CPU时间继续做其他的事情。

IO复用模型

当使用fgets等待标准输入的时候,如果此时套接字有数据但不能读出。IO多路复用意味着可以将标准输入、套接字等都当做IO的一路,任何一路IO有事件发生,都将通知相应的应用程序去处理相应的IO事件,在我们看来就反复同时可以处理多个事情。这就是IO复用

信号驱动IO

在信号驱动式 I/O 模型中,应用程序使用套接口进行信号驱动 I/O,并安装一个信号处理函数,进程继续运行并不阻塞。当数据准备好时,进程会收到一个 SIGIO 信号,可以在信号处理函数中调用 I/O 操作函数处理数据。

异步IO

用程序告知内核启动某个操作,并让内核在整个操作(包括将数据从内核拷贝到应用程序的缓冲区)完成后通知应用程序。那么和信号驱动有啥不一样?

  • 讲讲select和epoll的区别?

这里一样的套路,先说出两者的用途,然后两者的优缺点。

select的缺点

  • select返回的是含有整个句柄的数组,应用程序需要遍历整个数组才能发现哪些句柄发生了事件

  • select的触发方式是水平触发,应用程序如果没有完成对一个已经就绪的文件描述符进行IO操作,那么之后每次select调用还是会将这些文件描述符通知进程

  • 内核 / 用户空间内存拷贝问题,select每次都会改变内核中的句柄数据结构集,因而每次select调用时都需要从用户空间向内核空间复制所有的句柄数据结构,产生巨大的开销

  • 单个进程能够监视的文件描述符的数量存在最大限制,通常是1024,当然可以更改数量

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值