微信 一面

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

相关推荐

头像
04-16 10:37
算法工程师
职位描述2021年4月,阿里集团成立智能信息事业群,聚焦AI技术在信息服务赛道的创新应用,从工具到服务,持续为用户提供高效、智能的互联网产品。智能信息事业群核心产品为夸克APP、UC浏览器、书旗小说、超级汇川等,以多APP矩阵,覆盖横跨各年龄段的数亿用户人群,服务超10万客户。目前我们正在用大模型服务于公司的多条业务线,作为智能信息的AI Infra团队,在这里你将深入参与到大模型的训练和推理中: 1、参与大模型离线训练的效率和稳定性提升的工作; 2、参与大模型在线inference吞吐/延迟优化,提升inference性价比的工作; 3、参与上述算力加速软硬件及平台体系化的设计和建设工作,支撑大模型能力建设和落地应用。职位要求,具备以下一项或多项能力:1. 熟悉C/C++、Python等至少一门编程语言,以及Linux下的开经验 2. 了解常用机器学习算法,对文本/多模态大模型相关领域模型,有极佳的工程实现能力,了解TF/Pytorch/Jax等深度学习框架,有相关模型训练和模型效果优化者优先 3. 了解大模型MegatronLM/Deepspeed/Colossal分布式训练框,了解模型量化、蒸馏、剪枝等模型优化原理和策略,有相关训练、调优经验优先4. 了解或使用过使用包括vllm/tgi/tensorrtLLM等模型推理服务框架,有代码分析及实践经验优先 5. 了解GPU/ASIC芯片,了解硬件系统架构,能够针对性的编写高性能的算子实现,有分析及调优能力 5. 在训练/推理加速相关领域的研究和成果发表者优先 ,也欢迎有HPC或体系结构背景的铜须同时我们还希望你 1、学习能力强,有良好的英文论文阅读能力,对新事物保有好奇心,并能快速适应新环境; 2、良好的沟通能力和团队协同能力;能与他人合作,共同完成目标; 3、对所在领域有热情,相信方法总比困难多,善于独立思考并反思总结。base地点:广州,欢迎感兴趣的同学留言、私聊或发送简历到邮箱zhangmaoquan.zmq@alibaba-inc.com
投递阿里巴巴等公司10个岗位 名企内推
点赞 评论 收藏
转发
1 2 评论
分享
牛客网
牛客企业服务