微信 一面

  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. 最长子数组问题(双指针)

全部评论
举一个简化的例子:如果rand()函数返回一个0到15的数,我们需要一个0到100的范围。我们可以生成两个这样的随机数a和b,然后计算n=a*16+b。这会给我们一个0到255的数。然后,我们执行n%101得到一个0到100的数。注意,这样做有很小的偏差,因为256不是101的整倍数。然而,生成一个0到300000的随机数,相对于65536,偏差非常小,可以忽略不计。
点赞
送花
回复
分享
发布于 04-25 23:03 北京
要避免由于取模导致的不均匀性,我们可以使用舍弃法(rejection sampling)。基本思想是,我们继续生成随机数,直到这个数落在一个我们可以均匀处理的范围内。具体来说,作为示例,我们生成一个大于或等于0且小于等于N * 300000 - 1的随机数,其中N是可以使得N * 300000刚好小于等于最大可能生成的随机数的整数。
点赞
送花
回复
分享
发布于 04-25 23:04 北京
网易互娱
校招火热招聘中
官网直投
C++标准库中的容器如std::vector, std::list, std::map等本身不是线程安全的。这意味着在多线程程序中如果有多个线程对同一个容器同时进行写操作或者同时进行读写操作,那么需要开发者自行通过互斥锁(如std::mutex)或其他同步机制来保证线程安全。
点赞
送花
回复
分享
发布于 04-25 23:05 北京
线程安全(Thread Safety)是一个编程概念,在多线程的环境下,如果一个程序或者数据结构可以被多个线程同时访问而不引发任何类型的错误或者问题,那么它就是线程安全的。 具体来说,线程安全的代码可以同时被多个线程安全地调用而不用担心外部的同步。为了做到这一点,线程安全的代码需要确保共享资源在同一时间只能由一个线程访问(例如通过互斥锁),或者设计成无论多少线程访问它们也不会导致错误的状态(例如无锁编程技术或者简单地不共享数据)。
点赞
送花
回复
分享
发布于 04-25 23:07 北京
在C++中,标准库提供的 std::map 通常是以红黑树实现的平衡二叉搜索树。下面是对std::map中一些常用操作的时间复杂度概述: 查找元素(读操作): 时间复杂度为 O(log n),其中 n 是 map 中元素的数量。 插入元素(写操作): 时间复杂度同样为 O(log n),这是因为需要先找到正确的插入位置,然后可能还需要进行红黑树的平衡调整。 删除元素: 时间复杂度也是 O(log n),删除操作涉及到查找要删除的节点以及后续的可能平衡操作。 遍历整个map: 遍历 map 的时间复杂度是 O(n),因为你需要访问 map 中的每个元素。即使它是基于树的结构,完整的遍历仍然意味着访问所有节点。
点赞
送花
回复
分享
发布于 04-25 23:09 北京
`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` 信号非常重要,可以提高程序的健壮性和可靠性。
点赞
送花
回复
分享
发布于 04-25 23:12 北京
`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` 返回进行适当的重试逻辑处理。
点赞
送花
回复
分享
发布于 04-25 23:18 北京
洗牌算法
点赞
送花
回复
分享
发布于 04-26 10:59 北京
我跟你问的差不多
点赞
送花
回复
分享
发布于 04-28 10:03 北京

相关推荐

3.20 投递3.21 笔试邀请 3.27 笔试4.8 一面 4.10出结果约二面4.12 二面 4.17出结果约hr面4.18 hr面4.19 oc🔥🔥一面内容电话面,40mins左右,面试官人不错,会补充我没讲到的点并引导我,中间有段表达有点混乱还提醒我注意分点表达1.项目相关●介绍项目●为什么选择completableFuture?还有什么异步查询的方式?countdownLauch和completableFuture类有什么区别?我提到底层实现原理不一样,面试官补充completableFuture可以有返回结果而countdownLauch没有●项目中怎么用mysql和redis的?2.redisredis的数据结构?●跳表如何实现?与树结构相比有什么优势?查询和删除的时间复杂度是多少?3.mysqlob+树相对于b树的优势?相比于红黑树呢?●聚簇索引与非聚簇索引?4.kafka如何保证消息不会丢失?我讲了生产者ack机制,但是没讲到副本,于是面试官通过下面几个问题逐步引导●主从同步过程中leader挂了,怎么办?●有了解过ISR么?ooffset如何实现?●如何保证消息不会重复消费?5.场景题●从上面offset如何实现的问题展开,问如何使用redis或mysql去保证id不重复?我提了redis用分布式锁,mysql用主键或号段模式继续追问是否可以用redis集合实现?布隆过滤器了解吗,能不能用在这个场景下?了解,但是没回答上来,可能是用布隆过滤器先前置地判断两个id是否重复🔥🔥二面内容视频面,深挖项目,问题没啥参考价值,技术上让我介绍下kafka以及如何运用在项目中的🔥🔥HR面内容●  自我介绍●为什么不继续留在上家公司实习?●对部门业务有什么了解?如何胜任这份工作?学习或实习中比较有挑战性的case?●过去二十几年里对你影响比较大的人或事?●手里有什么 offer?🔥🔥🔥🔥还未投递的老哥欢迎:👉 【淘天内推链接】https://talent.taotian.com/campus/qrcode/home?code=L4PGnjjGYz00uX_Ucjt55w==#25届暑期实习##淘天##暑假实习##面经##内推#
点赞 评论 收藏
转发
1 2 评论
分享
牛客网
牛客企业服务