20190807-阿里C++研发工程师-一面

本文全面解析技术面试关键环节,涵盖自我介绍、研究方向介绍、智力题解答、哈希冲突处理、进程通信方式、进程与线程区别、软件测试方法、大数据集统计、编程题解析等内容,深入探讨了线程与进程的差异、共享内存实现、经典智力题解法及算法题高效求解策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.自我介绍

2.介绍一下研究生的研究方向

3.一个智力问题

有无限多的水,如何用两个分别为5L和3L的容器量出4L的水?

4.如何解决哈希冲突?

链表法(链地址法)

开放地址法

再哈希法

公共溢出区法

5.进程间的几种通信方式?

进程间通信(IPCInterProcess Communication)是指在不同进程之间传播或交换信息。

IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、SocketStreams等。其中 SocketStreams支持不同主机上的两个进程IPC

6.进程和线程的区别?多线程如何进行同步?

7.对软件测试方法有什么了解?如单元测试,集成测试,接口测试

8.大数据集的统计:

一个数据集有1000万行数据,每行是一个字符串型的URL,每行的数据可能是重复的,让查找出出现次数最多的1000条URL,top-k问题

思路:由于记录是可重复的,所以可以用集合来存储最终要保存的1000条数据; 

可以使用hash函数对每条记录进行映射,用位向量来存储哈希值,并在每个位置记录一个计数器。逻辑上可行,但是复杂度太高,问如何用top-k算法实现?

top-k算法一般是用什么数据结构实现的?

9.编程题

给出一个单向链表,输出该链表的倒数第k个结点(未知链表长度)

 

 黄婷-0808阿里一面

1、 自我介绍

2、 项目介绍(面试官没太听明白)

3、 线程与进程的区别?线程间如何实现共享内存?

4、 智力题

1) 一个桃一毛钱,三个桃核能换一个桃,最多能吃多少个桃?

2) 燃烧一根不均匀的绳子需要一小时,问如何度量出半个小时?

从两头同时开始燃烧,燃完即为半小时。

5、 算法题

25个数,找出top 3个数,有一个机器能对至多五个数进行排序,问至少需要排序多少次能找出top 3个数。

1)Top-k算法可用堆排序。

先选择前三个数构建一个小顶堆,对全部元素遍历一遍,对每个元素如果大于堆顶元素,则替换堆顶元素,并维护堆的性质,最后堆中的元素就是top3.

2)可用锦标赛法

思路:先把25个元素分成五组,分别排序,然后再对五个每组中的最大元素进行排序,最大值就是整个元素集的最大值,移除该元素然后继续对五个组中的最大元素进行排序,找到第二大元素,继续该方法找到第三大元素,这样一共进行了5+1+1+1=8次排序。(是否六次就可以,剩下的每次只需要一次比较即可)

先把25个数分成ABCDE五组分别进行排序(5),得到:A1 A2 A3 A4 A5; B1 B2 B3 B4 B5; C1 C2 C3 C4 C5; D1 D2 D3 D4 D5; E1 E2 E3 E4 E5; 分别取出各组的最大元素进行排序(1),假设得到:A1 B1 C1 D1 E1,即A1为top 1;只需再对A2 A3 B1 B2 C1这五个数进行一次排序(1),即可得到top 2, top 3;一共需要排序5+1+1=7次。

6、 编程题

一个升序数组,找出给定数字在数组中出现的首末位置

思路:二分查找分别找到首尾出现的位置

 

 

 

 

转载于:https://www.cnblogs.com/hy4201/p/11317092.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值