征战bat,后台开发面试题(一)——C++篇(还有好多可以补充)

在CSDN上看到这哥的后台开发面试问题整理,覆盖面还算比较全,这里拿出来强答一发。这里,我可能会额外加入几个自己想到的试题。

题目列表

  • 了解哪几种排序方式?有没有 O(n) 的排序
  • 平衡二叉树的插入
  • 二叉查找树
  • 10 个 G 的最高访问 Ip 统计
  • 倒排索引
  • 常用缓存置换算法
  • Lru算法的实现及优化
  • 堆和栈的区别
  • 常用 hash 算法
  • md5、sha1 的实现
  • 一万个 url 的快速查找
  • 两个有序数组找并集的优化
  • 10亿个整数中找最大的 100 个,用 O(n)
  • RSA加密原理(附加)

题解

了解哪几种排序方式?有没有 O(n) 的排序

  • 冒泡排序、快速排序、堆排序、直接(或二分)插入排序、希尔排序、归并排序、基数排序
  • 在一些限制条件下有O(n)的排序

平衡二叉树的插入

这里吧。总结旋转的4条规则

  • LL旋转
  • RR旋转
  • LR旋转 先左子树RR,自己再LL
  • RL旋转 先右子树LL,自己再RR

二叉查找树。

这题是要干嘛!!!还是不管他了!
让来面试的自称有男朋友的妹纸用C语言实现一个红黑树吧。

10 个 G 的最高访问 Ip 统计

10个G的IP,如果4字节一个来算的话,大约250亿个。

  • 如果重复率高,内存足够,直接用hash表计数即可
  • 如果重复率低,那就先将10G文件通过hash分组到多个文件中,之后分别对每个文件进行hash计数。

倒排索引

引用wiki

倒排索引(英语:Inverted index),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。

有两种不同的反向索引形式:

  • 一条记录的水平反向索引(或者反向档案索引)包含每个引用单词的文档的列表。
  • 一个单词的水平反向索引(或者完全反向索引)又包含每个单词在一个文档中的位置。

后者的形式提供了更多的兼容性(比如短语搜索),但是需要更多的时间和空间来创建。

常用缓存置换算法

  • FIFO 先进先出 常规实现 队列
  • LRU Least Recently Used 最近最久未使用算法 常规实现 链表
  • LFU Least Frequently Used 最近最少使用算法 常规实现 小顶堆

Lru算法的实现及优化

常规实现是一个双向链接+hashmap。时间复杂度为O(1),基本上没什么优化空间了。
通常优化会集中在内存方面,即双向链接这块的内存占用。如redis会会使用近似lru算法来优化掉双向链表

堆和栈的区别

不知道这题为啥被放到了这里。

  • stack区 由编译器自动分配释放,为连续的空间,向底地址增长,存放局部变量,函数参数等数据。
  • heap区 一般由程序员主要分配释放,如malloc,free,new,delete。分配方式类似链表,底层通过调用brk和mmap进行分配
  • 理论上stack区的数据操作效率比heap区要高

常用 hash 算法

  • 复杂散列算法如md5,sha1
  • 简单散列算法如ELF,SDBM,RS,FNV等

md5、sha1 的实现

不至于真考这种题吧,汗!

一万个 url 的快速查找

一万个 url,扔hash表里不就好了。没明白这题是想考啥。不像是要考trie,AC自动机这些东西

两个有序数组找并集的优化

归并的思路,时间复杂度最坏的情况 O(max(m,n)) 了,没得优化了。

10亿个整数中找最大的 100 个,用 O(n)

真正的 O(n) 谁能做到麻烦告知下

  • TopN问题,常规思路是用一个堆,之后不断地取新数据更新这个堆,更新完后即可得到结果。但这个复杂度是 O(nlgm)
  • 如果整数的范围不大,内存也足够的话,可以用一个char数组来计数。之后倒序找出最大的100个。这个理论上能在 O(n) 内。

RSA加密原理(附加)

欧拉函数n有比它小的互质数的个数Phi(n)=n*(1-1/p1)(1-1/p2)... p是其质因数
欧拉定理a与n互质则(a^Phi(n))%n==1 => (a^(p-1))%p=1(p质数)
质数p,q,p!=q,N=pq,r=(p-1)(q-1)
选择一个e(e<r),求得e关于模r的模反元素d
(N,e)是公钥,(N,d)是私钥
加密ne ≡ c (mod N) 解密cd ≡ n (mod N) (n为信息,c为加密结果)
cd ≡ n e·d(mod N)

作者原创,转载请注明出处

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,504评论 1 51
  • 1. 让自己习惯C++ 条款01:视C++为一个语言联邦 为了更好的理解C++,我们将C++分解为四个主要次语言:...
    Mr希灵阅读 2,784评论 0 13
  • 1. C++基础知识点 1.1 有符号类型和无符号类型 当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值...
    Mr希灵阅读 17,927评论 3 82
  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 2,751评论 0 3
  • 1. 结构体和共同体的区别。 定义: 结构体struct:把不同类型的数据组合成一个整体,自定义类型。共同体uni...
    breakfy阅读 2,110评论 0 22