灵活场景问题(面试题)

1. 在其他社区活跃过么(经常被问)这个可以好好准备一下

廖雪峰的官方网站
leetcode 中国
自己会在博客园 CSDN博客等等写文章。

开源中国 GitHub

国外的技术博客有:
微软亚洲研究院 里面的文章 十分前沿 和具体。
Stack Overflow
大名鼎鼎的 Stack Overflow,编程领域可以说是基本无人不知的吧。这个网站可以说是编程界最受欢迎的网站之一,上面收录了无数非常优秀和经典的问题和答案

GitHub

会看花王deep learning
会看python 图灵系列的书都很好

然后自然语言处理 之前看了一本书 是
hehan
hanLP 何han

2. 智力题:一只猴子,100根香蕉,距离家 50米,猴子一次最多能拿 50根香蕉,每走一米需要吃掉一根香蕉,请问最多能带多少根香蕉 --16条。

先从一个简单的说起,猴子可以带50个香蕉,走一步,然后消耗了1个香蕉,剩下49个,把48个香蕉放下,拿上一只香蕉往回走。再背上50个,再走一步就剩49个,所以走完一步之后,我们剩下的香蕉油49+48 = 97 所以我们消耗了三个香蕉为了走一步。
计算我们重复n次这样的操作,我们剩 100 - 3n
如果n = 50的话,就啥都不剩了,所以我们在n在小于50的时候 就不回头了
假设重复了n次上面的操作,后面50-n步,直接走回去不回头。
目标函数是 100- 3n - (50-n) = 50 - 2n
但由于一次只能背50个 所以n必须大于某个数 当剩余的香蕉大于50的时候。
即 100-3n >= 50 即 50 >= 3n 即 n >= 50/3 所以n必须大于16.4,即临界点是 n = 17 的时候,可以直接走回家
这时候,香蕉数: 50 - 2n = 50 - 34 = 16

3. 两堆大数,100亿个数和10亿个数,找交集

从小的问题开始聊 两个数组的交集。时间复杂度是O(m+n)
如果是大数据,量大的话该怎么办。
2^32 刚好41亿
可能要取到2 ^ 64
方法是 创建一个Bit数组,数组的每个元素,都能表示0或者1,数组的长度为2^32
对于40亿整数中的任何一个数,都可以对应放进这个数组里面的下标。
在这里插入图片描述
我们想要判断一个整数是否在这40亿整数中,我们只需要直接在数组中,取该数字下标的值,是1还是0 如果是1则存在,0则不存在。

如果是两个大数组的话,构建两个BitMap,直接进行按位与和按位或操作。

https://www.pianshen.com/article/24931746611/

4. 大V发消息,如何分配 推荐

首先,优先发给大V关注的人群;然后再看大V的粉丝,首先推荐给在线的粉丝,然后再考虑还没上线的粉丝。
还可以用push和pull模式
push就是服务端主动推送消息给客户端,而pull则是客户端需要主动到服务端取数据
让客户端的自动去pull 消息。

5. 有100万视频库,现在输入一个新的视频,如何查询视频库里是否有相同的视频

现在感觉有想法了
其实就是将视频提取关键帧,然后就是照片之间的相似度了。哎。
换一个简单的说法,如果换成100万张照片呢?
我会说 计算 输入照片和每张照片的距离,
什么方法计算相似度
https://zhuanlan.zhihu.com/p/68215900
通过以下几种简单的计算方式来计算图片的相似度:

(1)直方图计算图片的相似度
python中利用opencv中的calcHist()方法获取其直方图数据
检查两张照片的直方图变化趋势是相符的有重合态的。
例子

(2)哈希算法计算图片的相似度
几种hash值的比较:
aHash:平均值哈希。速度比较快,但是常常不太精确。
pHash:感知哈希。精确度比较高,但是速度方面较差一些。
dHash:差异值哈希。精确度较高,且速度也非常快

平均哈希算法(aHash):
该算法是基于比较灰度图每个像素与平均值来实现。
aHash的hanming距离步骤:
先将图片压缩成8*8的小图
将图片转化为灰度图
计算图片的Hash值,这里的hash值是64位,或者是32位01字符串
将上面的hash值转换为16位的
通过hash值来计算汉明距离

(3)余弦相似度(cosin)
把图片表示成一个向量,通过计算向量之间的余弦距离来表征两张图片的相似度。
余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。
cos = AB/(||A||||B||)

补充:
哈希算法(Hash)又称摘要算法(Digest),它的作用是:对任意一组输入数据进行计算,得到一个固定长度的输出摘要。

6. 10亿个数中找出最大的10000个数

有1亿个浮点数,如果找出期中最大的10000个
有10000000个记录,这些查询串的重复度比较高,如果除去重复后,不超过3000000个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。请
10亿个整数找出重复次数最多的100个整数
提取某日访问网站次数最多的那个IP


这是topK问题
通常比较好的方案是分治+Trie树/hash+小顶堆(就是上面提到的最小堆),即先将数据集按照Hash方法分解成多个小数据集,然后使用Trie树活着Hash统计每个小数据集中的query词频,之后用小顶堆求出每个数据集中出现频率最高的前K个数,最后在所有top K中求出最终的top K。

分治法,将1亿个数据分成100份,每份100万个数据,找到每份数据中最大的10000个,最后在剩下的100*10000个数据里面找出最大的10000个
那么每一份 100万数据又是如何找出最大的10000个数呢?

如果100万数据选择足够理想,那么可以过滤掉1亿数据里面99%的数据。100万个数据里面查找最大的10000个数据的方法如下:用快速排序的方法,将数据分为2堆,如果大的那堆个数N大于10000个,继续对大堆快速排序一次分成2堆,如果大的那堆个数N大于10000个,继续对大堆快速排序一次分成2堆,如果大堆个数N小于10000个,就在小的那堆里面快速排序一次,找第10000-n大的数字;递归以上过程

这里做一个补充:提出一个点 – 做预处理
先通过Hash法,把这1亿个数字去重复,这样如果重复率很高的话,会减少很大的内存用量,从而缩小运算空间,
然后通过分治法或最小堆法查找最大的10000个数。

8. 有没有考虑不同性质的模型之间的融合
9. 概率题:翻硬币,硬币谁先翻到正面谁获胜,问先翻的获胜概率(从概率和规律两个角度)

A第一次就赢了 P1= 1/2
A第二次才赢 P2 = 1/2 * 1/2 * 1/2 = 1/8 即A第一次败了B第一次也败了,A第二次赢了。

A第三次才赢 P3 = (1/2)^5 即第一次和第二次AB都败了 第三次A赢了
。。。
A第n次才赢 Pn = (1/2)^(2(n-1)+1) = (1/2) ^ (2n-1)

把所有的累加起来
1/2 + 1/2 ^ 3 + 1/2 ^ 5 + , + 1/2 ^ 2n-1. = 2/3
【其实就是带入累加公式 q=1/4 】
s u m = a 1 ( 1 − q n ) 1 − q = 1 / 2 ∗ 1 − q n 3 / 4 = 2 / 3 sum = \frac{a_1(1-q^n)}{1-q} = 1/2 * \frac{1-q^n}{3/4} = 2/3 sum=1qa1(1qn)=1/23/41qn=2/3

10概率题扑克牌要记得怎么做。(之前记错了做法哎)
11. 如何提取视频的特征等等问题

视频一般是具备结构化信息的,一般视频公司会有 CMS(Content Management System,内容管理系统),该系统一般会包含媒资库,媒资库中针对每个节目会有标题、演职员、导演、标签、评分、地域等维度数据,这类数据一般存放在关系型数据库(如 MySQL)中。这类数据,我们可以将一个字段(也是一个特征)作为向量的一个维度,这时用向量表示视频,每个维度的值不一定是数值,但是形式还是向量化的形式,即所谓的向量空间模型(Vector Space Model,简称 VSM)。我们可以通过如下的方式计算两个视频之间的相似度。。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jianafeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值