快手 基础架构实习1,2,3面 hr面 面经

1面面试官非常的和善,问的问题也非常有意思有深度,最好的是还做了问题的解答,学习了一波新知识。。

全程大概聊了1个多小时。

问题:

Foo *p = new Foo;
std::shared_ptr<Foo> p1(p);
std::shared_ptr<Foo> p2(p);
// p2 = p1;
std::unique_ptr<Foo> p3(new Foo);
std::unique_ptr<Foo> p4;
p4 = std::move(p3);
map<int, Foo*> map1;
map<int, Foo> map11;
...
map<int, shared_ptr<Foo> > map2;
...
map1.clear();

1.c++智能指针说一下 ,几个智能指针的使用场景和区别
2.智能指针之间的转换
3.如何将unique_ptr赋值给shared_ptr
4.使用map存放的是指针会不会出现内存泄漏 如何避免
5.一个裸指针分别初始化2个智能指针会出现什么问题?
6.std::move说一下
7.tcp和udp之间的区别
8.基于udp如何实现稳定传输?有什么办法实现?
W(bytes), T(s), B (b/s)
speed = W/T b/s
9.用户传输文件传输速率会受什么影响?推导公式
10.那么如何提升用户的传输速率?
11.tcp在计算RTT时会出现的问题是什么?如何改进?
12.编程题:使用2个mutex实现读写锁
rwlock
mutex1, mutex2
write_lock()
{}
write_unlock()
{}
read_lock()
{}
read_unlock()
{}
13.这样的实现会有什么问题,读很多写很少会怎么样?
14.分布式锁知道么?
15.一个分布式场景 如何保证数据的一致性? 什么时候需要维持数据的一致性?
16.2阶段提交和3阶段提交知道么?
17.问他问题

2面

2面面试官只问算法:

  1. 给你1GB数据,数据都是字符串,按照字典序全排序怎么做?
  2. 快排的空间复杂度和时间复杂度?
  3. 如果是1TB,如何全排序?
  4. 多路归并的时间复杂度 推导一下
  5. 如果是1PB的数据量,给你100台机器你怎么做全排序?
  6. 你有100块,百分之50的概率投资可以赚200,百分之50的概率亏完,请问如何使得收益最大化?

3面

3面今天面完了 然后细节有时间我再补充。

hr面也是今天。。。

目前已经发了offer啦

#快手##实习##面经##C++工程师#
全部评论
感觉比我的一面难多了
点赞 回复
分享
发布于 2019-03-20 15:50
咋这么难
点赞 回复
分享
发布于 2019-04-09 21:21
阿里巴巴
校招火热招聘中
官网直投
4面是一天完成的吗?
点赞 回复
分享
发布于 2019-04-19 18:54
你好!请问一下“.智能指针之间的转换”是指的智能指针和基础指针的转换吗?
点赞 回复
分享
发布于 2019-08-18 10:38
恭喜楼主,沾沾喜气!
点赞 回复
分享
发布于 2019-08-22 01:36
看不懂 太菜了
点赞 回复
分享
发布于 2019-08-23 19:05
沾沾楼主喜气,1号下午两点一面呢,祝我好运呀!
点赞 回复
分享
发布于 2019-08-30 14:26
楼主hr面问些什么问题啊
点赞 回复
分享
发布于 2019-09-02 09:38
投资问题咋回答啊
点赞 回复
分享
发布于 2019-09-02 09:41
投资问题有意思啊 楼主咋回答的?
点赞 回复
分享
发布于 2019-09-02 11:30
沾沾楼主好运👍
点赞 回复
分享
发布于 2019-09-02 11:33
3怎么答啊
点赞 回复
分享
发布于 2019-09-02 14:32
哪个方面的基础架构呀,base哪里
点赞 回复
分享
发布于 2023-05-24 04:59 英国

相关推荐

在前端项目中,错误处理和异常监控是确保应用程序稳定性和用户体验的重要方面。以下是一些常见的错误处理和异常监控的方法和实践:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&amp;uuid=3c850e207f56463599b3017d0d89a8cc错误捕获和处理:使用try-catch语句或错误处理函数(例如JavaScript中的error回调函数)来捕获代码中的异常和错误。适时处理错误,提示用户并提供适当的处理措施,或将错误信息记录下来以供日志分析和排查。异常监控工具:使用异常监控工具,如Sentry、Bugsnag等,实时监测前端应用程序中的异常和错误。这些工具可以捕获并记录前端错误信息,并提供详细的报告和分析,帮助开发人员及时发现和解决问题。日志记录:在前端应用程序中添加适当的日志记录,记录关键操作、重要事件和异常情况。日志记录可以帮助开发人员在遇到问题时进行分析和排查,并为错误处理提供必要的信息。错误信息展示和反馈:当用户在前端应用程序中遇到错误时,及时向用户提供易于理解和有用的错误信息。避免向用户呈现过于技术性的错误堆栈信息,而是提供简洁明了的用户友好提示,帮助用户理解发生了什么问题并提供解决方案或联系方式。监控性能指标:除了错误监控,还应监控前端应用程序的性能指标,例如页面加载时间、响应时间等。使用性能监控工具(如Google&nbsp;Analytics、New&nbsp;Relic等)收集和分析这些指标,有助于查找性能瓶颈和改进用户体验。自动化测试:编写和执行自动化测试用例有助于捕捉潜在的错误和异常情况。通过使用测试框架(如Jest、Mocha等)和断言库(如Chai、Expect等),可以验证代码的正确性,并在代码变更后执行自动化测试,及早发现潜在问题。监控API请求和响应:在前端应用程序中监控和记录所有与后端API请求和响应相关的错误和异常。这样可以帮助开发人员更好地理解应用程序中的问题,并通过适当的反馈或重试机制改进用户体验。https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&amp;uuid=3c850e207f56463599b3017d0d89a8cc
点赞 评论 收藏
转发
6 101 评论
分享
牛客网
牛客企业服务