微信 一面

  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 北京

相关推荐

点赞 评论 收藏
分享
秋招是决战大家都知道,但是很多像我一样的普通人其实是都没怎么准备的我也不会啰嗦什么应该规划,应该提前准备这种废话,这种大家都知道就是不知道大家感觉是否跟我一样,八股背的其实是有时效性的,就算到做笔记的程度效果也有限所以就是觉得会有一些,在没面试的时候,应该投入时间去做的一些事情:1. 渐进式可复用学习积累总结:还是比较废话的一点,不过确实沉淀还是有点效果的。不该由我来说,反正核心是,背的八股怎么复用,越背越熟悉,做得项目下次面试应该怎么发挥在面试中。2. 算法:八股是比较容易忘记的,但是算法不会。算法如果能平坦到早一点的时间写完是很舒适的,到秋招十天写完hot100是很痛苦的。我现在终于敢说这句话了,其实我leetcode都没过150题。我的经验是刷明白比刷题量更重要,总结方法更重要。其实还有一个层面的事情,如果你想笔试拿高分,那肯定不能只依靠力扣。3. 博客:这个的好处是 a. 确实能倒逼自己更熟悉一点b. 你学了什么架构设计,理解透了什么框架,有看过什么标准库的源码?但是忘了,怎么向面试官证明你真的看过?这个时候,你可以说,我博客有讲解这点。这个就爽了。秋招中也能做,不冲突这个的例子就是我的美团了。除了70%的运气,剩下可能就是我写的博客了,二面面试官是要了我的博客地址的,当时别的没问太多技术问题,手撕也巨简单,我还以为要凉了。我博客写得不算好,但是还是稍微有用点心的。4. 开源:这个我自己也没做到,就不多说了。只能也是跟我自己提醒下,门槛绝对没那么高。5. 技术面:这块其实就是发展兴趣,有时候还是有一些纯自己主动,而不是八股这种被动的学习会更好一点。还是不想说太多,我直接说面试起作用的例子吧。这块从另一个层面上来说,其实很多面试是需要亮点的,不是说所有八股都背出来就好了。a. 面试经常会问,hr面其实还可以直接吹,但是技术面也会经常,你自己觉得你有什么擅长的地方,或者是最近在干嘛,看什么书之类的。我朋友平常喜欢研究各种架构设计,就以此来吹逼,经常说错,但是感觉很爽很有意思。所以平常会总结很多,也没到发博客的程度,就各种跟人讨论。然后他春招只面了一家大厂,就百度。二面的时候计网和os问题基本全崩了。但是最后问你对什么比较感兴趣,然后架构设计聊了很多,非常加分。后面三面也几乎只问架构设计,就直接一路打通了。b. 两年前的校招,学长跟我说的例子。阿里问最能证明你能力的一个项目是什么,答了6824的raft,后面就过了。c. 我朋友跟我一样字节一度被面评拉黑没机会没后端,通过参加字节的 ai agent 的一个比赛拿奖了,简历直推leader火速进面。
ResourceUtilization:mark长期规划
点赞 评论 收藏
分享
评论
2
5
分享

创作者周榜

更多
牛客网
牛客企业服务