2021-05-26-C++面试问题

Posted 茴薏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021-05-26-C++面试问题相关的知识,希望对你有一定的参考价值。

阿里搜索引擎
1.大量url,如何去重
问题:
有大量的字符串格式的URL,如何从中去除重复的,优化时间空间复杂度
1). 内存够用,将URL存入hash链表,每个URL读入到hash链表中,遇到重复的就舍弃,否则加入到链表里面,最后遍历得到所有不重复的URL。空间复杂度M,时间复杂度为O(N+N/M),M为不重复的URL,N为总URL数,但是M无法预测,所以存在风险,可能内存不足以存储所有的不重复URL。

2)为了解决内存可能不足的问题,需要把hash链表变化成普通的hash表,每个hash表元素指向一个文件文件,这个文件记录了所有该hash值对应的无重复的URL,那么在加入URL的时候就遍历对应文件中的URL,没有重复则加入到文件中。这样做时间复杂度没有提升,但是每次都要读写文件,消耗的时间应该是上一种方式的三倍(依赖于io速度),而对内存的要求比较小。一个改进是加入URL的时候进行排序,这样能减少比对的次数。

2.普通成员函数寻址的方式

普通的成员函数在被调用时有两大特征:

1) 普通的成员函数是静态绑定的,

2 )普通的成员函数调用时编译器隐式传入this指针的值。

3.C++变量存储位置

C语言在内存中一共分为如下几个区域,他们分别是:

1 )内存栈区: 存放局部变量名;

2 )内存

以上是关于2021-05-26-C++面试问题的主要内容,如果未能解决你的问题,请参考以下文章

2021-05-26-C++面试问题

2021-05-26-C++面试问题

面试经典问题及答案

15个经典面试问题

iOS面试准备之思维导图(转)

应届生面试问题及答案