【找工作】笔试面试题总结——多益网络面试题(人工智能岗)

来源:互联网 发布:网络推广新手 编辑:程序博客网 时间:2024/05/21 09:53

① 什么是内存泄漏?

       内存泄漏是指,程序中已动态分配的堆内存,由于某种原因,未被释放或者无法释放,最终造成系统内存的浪费。内存泄漏会导致程序运行速度减慢,甚至系统崩溃等严重后果。

② 字符串a和字符串b,思考一种方法,判断字符串a是否包含字符串b?

       从网上找到了博客给出了一种处理方法,博客地址为:http://blog.csdn.net/moli152_/article/details/44495935。

       方法思路如下:

       先把长字符串a中的字符放进一个哈希表(Hash table)中,然后轮询短字符串b,判断短字符串B是否都在哈希表中。如果都存在,说明包含;否则不包含。进一步讲,对字符串a用位运算(26bit整数表示)计算出一个“签名”,然后再用b中的字符到a中进行查找。

       代码实现如下:

#include <iostream>using namespace std;bool stringContain(string a, string b){int hash = 0;for (int i = 0; i < a.length(); ++i){hash |= (1 << (a[i] - 'A'));}for (int j = 0; j < b.length(); ++j){if ((hash & (1 << (b[j] - 'A'))) == 0){return false;}}return true;}int main(){string str1 = "ABCDEFG";string str2 = "CG";bool res = stringContain(str1, str2);if (res) cout << "a中包含b." << endl;else cout << "a中不包含b." << endl;system("pause");return 0;}

       这个代码的实质是用一个整数代替了哈希表,空间复杂度为O(1),时间复杂度为O(n+m)。

       另外,该博客中还有一个判定字符串中字符是否唯一的函数,我这里也厚着脸皮给他搬过来,方便学习与使用。

bool isUnique(string str){int a[8] = {0};for (int i = 0; i < str.length(); i++){int v = (int)str[i];int idx = v / 32, shift = v % 32;int b = a[idx] & (1 << shift);if (b != 0)return false;a[idx] |= (1 << shift);}return true;}


③ 一副扑克牌,除去大小王,从中任意抽取两张,都是红色牌的概率是多少?

       一副扑克牌除去大小王总共有52张牌,从中任意抽取两张的组合有52*51种,抽出的两张都是红牌的组合有26*25种,因此任意抽出的概率为:

 P=26*25/(52*51)=25/102


④ 谈谈你对C++中析构函数和虚函数的理解。


⑤ 你如何看待互联网行业加班这一现象?