微信 一面

  1. self-intro 1min
  2. 项目 5min
  3. 你这实习有突破啥技术上的难点嘛(无)
  4. faas
  5. hnsw
  6. 八股 30min
  7. os
  8. sigpipe
  9. 解释线程安全
  10. c++
  11. std::vector和std::map是线程安全的吗 NO
  12. map读/写/遍历的时间复杂度
  13. kafka
  14. 底层原理
  15. kafka的副本数是怎么确定的
  16. kafka需要同步所有副本才能确定同步完成吗
  17. raft
  18. raft论文看过吗
  19. raft中挂了一个节点怎么选举leader
  20. net
  21. EAGAIN是什么
  22. read()时出现EAGAIN,为什么
  23. send()时出现EAGAIN,为什么
  24. 用udp写过项目吗
  25. 做题 50min
  26. 手写atoi()
  27. 合并有序链表
  28. 给定rand()函数可随机生成0~65535,需要从30w人中随机抽出10w人(id: 1~300000)给出随机选出的id(有无大佬会的,请教一下)
  29. 按时间戳无序大数组统计login/logout,小内存,统计最大在线人数
  30. 最长子数组问题(双指针)

全部评论
写确认(acknowledgments):在生产者客户端,acks 配置决定了生产者需要多少个副本接收记录后认为写入是成功的: acks=0:生产者不会等待来自服务器的任何确认。 acks=1(默认值):只要领导者已经成功写入消息,生产者就会收到一个成功响应。 acks=all 或 acks=-1:这将确保所有的同步副本都接收到消息后,生产者才会收到一个成功响应。这提供了最高的数据可靠性。
点赞 回复 分享
发布于 2024-06-27 18:46 北京
我跟你问的差不多
点赞 回复 分享
发布于 2024-04-28 10:03 北京
洗牌算法
点赞 回复 分享
发布于 2024-04-26 10:59 北京
`EAGAIN` 是 Unix 和类 Unix 操作系统中的一个错误码,代表 "Resource temporarily unavailable"(资源暂时不可用)。在涉及非阻塞操作的系统调用中,`EAGAIN` 通常被用来告诉你,操作在现在无法进行,但是在未来可能会成功。 当调用 `read()` 或 `send()` 或其他 I/O 函数时,在非阻塞模式下,可能会出现 `EAGAIN` 错误。 `read()` 时出现 `EAGAIN` 的原因: 当你在非阻塞的文件描述符上执行 `read()` 操作时,如果没有数据可供读取,而且调用该操作的进程不会被放入等待状态直到数据到达,这时操作系统会立即返回 `EAGAIN` 错误。这是告诉你,现在没有数据可读,但是你可以稍后重试。 例如,对一个非阻塞的 socket 或管道执行 `read()` 操作,如果接收缓冲区为空,那么 `read()` 调用将失败,并返回 `EAGAIN`。 `send()` 时出现 `EAGAIN` 的原因: 类似地,在非阻塞的 socket 上执行 `send()` 操作时,如果发送缓冲区已满,不能接受更多的数据,操作系统同样会返回 `EAGAIN` 错误。在这种情况下,可以等待一段时间直到缓冲区中的数据被对端读取出去一部分,释放出足够的空间后再次尝试发送。 处理 `EAGAIN` 错误的典型方法是使用 I/O 多路复用机制(如 select, poll, epoll 等)来监控文件描述符的状态,进而知道何时可以进行非阻塞读或写。在可读或可写时再次尝试对应的操作。如果你在应用程序中不希望处理 `EAGAIN` 错误,另一个解决方案是不使用非阻塞模式,或者对 `EAGAIN` 返回进行适当的重试逻辑处理。
点赞 回复 分享
发布于 2024-04-25 23:18 北京
`SIGPIPE` 是在 Unix 类操作系统中存在的一个信号,其信号值通常为 `13`。当一个进程向一个没有读取端的管道(pipe)或者 socket 写入数据时,操作系统会发送 `SIGPIPE` 信号给该进程。 通常情况发生在如下两种场景: 1. **管道(Pipe)**:如果你创建了一个管道,一个进程写入数据,而另一个进程负责从管道中读取数据。如果读取的进程结束了执行,管道的读端就会关闭,此时若写入进程继续往管道写数据,写入进程会收到 `SIGPIPE` 信号。 2. **套接字(Socket)**:类似地,在网络编程中,如果一个进程向一个 socket 写入数据,而对应的远程连接已经关闭了,导致没有读取数据的地方,那么写入操作会引发 `SIGPIPE` 信号。 默认情况下,当进程收到 `SIGPIPE` 信号时,会导致进程异常终止。然而,可以通过编程来处理这个信号,避免默认的行为,例如可以: - 忽略 `SIGPIPE` 信号,这样写入操作会返回错误,而不是终止进程。在 Linux 中,可以使用 `signal(SIGPIPE, SIG_IGN);` 或者设置 socket 选项 `SO_NOSIGPIPE` 来忽略它。 - 捕捉 `SIGPIPE` 信号并通过一个自定义的处理器函数来处理它。 - 使用 `send` 函数向 socket 写数据时加上 `MSG_NOSIGNAL` 标志,这样操作系统就不会发送 `SIGPIPE` 信号,而是返回 `EPIPE` 错误。 在编写网络应用或者使用管道来进行进程间通信时,合理处理 `SIGPIPE` 信号非常重要,可以提高程序的健壮性和可靠性。
点赞 回复 分享
发布于 2024-04-25 23:12 北京
在C++中,标准库提供的 std::map 通常是以红黑树实现的平衡二叉搜索树。下面是对std::map中一些常用操作的时间复杂度概述: 查找元素(读操作): 时间复杂度为 O(log n),其中 n 是 map 中元素的数量。 插入元素(写操作): 时间复杂度同样为 O(log n),这是因为需要先找到正确的插入位置,然后可能还需要进行红黑树的平衡调整。 删除元素: 时间复杂度也是 O(log n),删除操作涉及到查找要删除的节点以及后续的可能平衡操作。 遍历整个map: 遍历 map 的时间复杂度是 O(n),因为你需要访问 map 中的每个元素。即使它是基于树的结构,完整的遍历仍然意味着访问所有节点。
点赞 回复 分享
发布于 2024-04-25 23:09 北京
线程安全(Thread Safety)是一个编程概念,在多线程的环境下,如果一个程序或者数据结构可以被多个线程同时访问而不引发任何类型的错误或者问题,那么它就是线程安全的。 具体来说,线程安全的代码可以同时被多个线程安全地调用而不用担心外部的同步。为了做到这一点,线程安全的代码需要确保共享资源在同一时间只能由一个线程访问(例如通过互斥锁),或者设计成无论多少线程访问它们也不会导致错误的状态(例如无锁编程技术或者简单地不共享数据)。
点赞 回复 分享
发布于 2024-04-25 23:07 北京
C++标准库中的容器如std::vector, std::list, std::map等本身不是线程安全的。这意味着在多线程程序中如果有多个线程对同一个容器同时进行写操作或者同时进行读写操作,那么需要开发者自行通过互斥锁(如std::mutex)或其他同步机制来保证线程安全。
点赞 回复 分享
发布于 2024-04-25 23:05 北京
要避免由于取模导致的不均匀性,我们可以使用舍弃法(rejection sampling)。基本思想是,我们继续生成随机数,直到这个数落在一个我们可以均匀处理的范围内。具体来说,作为示例,我们生成一个大于或等于0且小于等于N * 300000 - 1的随机数,其中N是可以使得N * 300000刚好小于等于最大可能生成的随机数的整数。
点赞 回复 分享
发布于 2024-04-25 23:04 北京
举一个简化的例子:如果rand()函数返回一个0到15的数,我们需要一个0到100的范围。我们可以生成两个这样的随机数a和b,然后计算n=a*16+b。这会给我们一个0到255的数。然后,我们执行n%101得到一个0到100的数。注意,这样做有很小的偏差,因为256不是101的整倍数。然而,生成一个0到300000的随机数,相对于65536,偏差非常小,可以忽略不计。
点赞 回复 分享
发布于 2024-04-25 23:03 北京

相关推荐

点赞 评论 收藏
分享
04-24 21:51
已编辑
门头沟学院 Java
🤔部门:快手支付中台----一面时间:1h1.问实习,觉得实习难点在哪,自己成长最多的地方2.Redis中的string底层结构是什么,zset底层结构是什么,跳表的查询复杂度3.线程池的核心参数如何设置,cpu利用率如何计算,cpu的负载是什么4.介绍一下AQS,加锁和释放锁的流程是什么,底层为什么要使用用双向链表,Synchronized的加锁和释放锁的流程,等待队列和阻塞队列的区别,使用notify后会发生什么5.问看过spring源码吗6.介绍一下Raft,Raft怎么保证强一致性的7.zookeeper使用的一致性算法和Raft有什么区别8.说一下对分布式事务的理解,什么情况下需要使用分布式事务,本地消息表如何保证最终一致性的9.手撕:快排 + 多线程循环打印ABC----二面:时间:40min1.实习介绍2.使用Redis做幂等,会出现什么样的不一致的情况3.Kafka消息的可靠性是如何保障的4.Kafka消息底层是如何存储的,Kafka怎么保障消息分区有序的5.使用Kafka的话,怎么保证写DB和发消息的一致性,使用本地消息表的话本地事务是如何保证的,Transactional注解底层是如何实现的,Transactional内部调用失效的原因以及如何解决6.讲一下MySQL的意向锁7.讲一下JD hotkey的整体架构,如何统计热key的8.简单说下共享单车扫码开锁是怎么一个流程9.手撕:换了两次题,1.丢n次骰子,求和为k的概率(不会)2. LC1044 最长重复子串(不会)3.组合总数----HR面常规问题----oc(已接)
查看17道真题和解析
点赞 评论 收藏
分享
评论
2
5
分享

创作者周榜

更多
牛客网
牛客企业服务