zoukankan      html  css  js  c++  java
  • 百度实习电面(二)

    先是问论文/研究,轻松搞定。

    1. 输出1234567*(2^987654321)的后10位数

    答案是(1234567*(2^987654321))%(10^10).关键是怎么算出这个数
    利用取模操作。取模满足分配率:(a*b)%c=((a%c)*(b%c))%c
    可将2^987654321分为2^m*2^m*...*2^n(m>=n).

    2. Java中ArrayList中插入一个元素的平均复杂度是多少?

    O(1). 回答得不好。可见数据结构:线性表/数组那一节。

    面完马上又打进来一个,还是那边的人,不过是另一个。
    可能是协调的问题,两个人同时对我进行二面。

    第二个人也是先问科研,很快结束。

    1. 两个集合,怎么求交集?

    类似DB里面的Join操作,说了两种:归并/Hash
    归并:将两个集合排好序,然后用类似归并排序的方式取交集。
    Hash:用比较小的集合建一个Hash表,然后大集合的每个元素到Hash表里查找,能找到的都属于交集。
    然后问为什么用比较小的建Hash表,为什么不用比较大的?
    因为小的建出来的Hash表占空间小,查找也快。
    对面马上举反例:如果一个尺寸为1,另一个为100,那么用100的建Hash表,只要查找一次就取完交集了。
    差点掉到陷阱里。不过马上反应过来反驳:建哈希表也是有开销的。

    2. 快排的思想?

    递归划分,不停地将比中间数小的划分到一边,大的另一边。划分到列表长度剩1的时候就搞定了。

    3. 快排的平均复杂度?最大复杂度?

    平均O(n*logn),最大O(n^2).

    4. 为什么快排的平均复杂度是O(n*logn)?

    回答得不好。

    5. 现在有一个单片机,只提供单字节(char)的读/写函数,如何支持float的读/写?

    转化为多次char型的操作。

    6. 现在有一个广告投放系统,如何保证rank公平?

    开放性问题。比如现在有2个广告,广告1的点击/展现是10/10000,广告2是1/10,广告3是0/5,如何公平展现?
    言下之意:广告1的点击率为1/1000,这是一个比较稳定的点击率(因为展现次数已经很多了);而广告2虽然点击率比较高,但因为展现很少,还无法确定它真正的受欢迎程度(这已有的1次点击可能纯属偶然,也许接下来几万次展现都不会被点击);广告3虽然最低,但可能只是暂时没人点。所以单纯地按照点击率rank是不够公平的。

    问题的核心是:

    1) 如何让新广告有机会(例如广告3那种);
    2) 同时让那些难以命中的广告能快速沉下去(例如,广告2从此以后一直没有人点击,如何让它快速沉下去。只通过点击率等它跌到1/1000以下是很慢的)。

    我提出的思路:

    1) 给每个新加入的广告一个较高的起始值i
    2) 加入不点击衰减因子c,不命中的时候加速下沉

    比如当前rank=点击/展现=h/s. 下一次展现,并点击,则rank变为(h+1)/(s+1)(这个暂时不改)
    但当展现但未点击时,rank不再简单变为h/(s+1),而是加一个衰减因子更新为h/(s+1+c), 其中c>0.
    然后对方顺着问,如何确定i和c合理的值?
    我回答用历史数据模拟,假设有t1时间点n个广告(a1,a2,...,an)的rank值集合R1.
    现在将时间回退至t0(初始状态),然后考虑不同的i,c值,模拟(t0->t1)时间段的广告投放、展现、访问过程,得到考虑i,c下t1时n个广告(a1,a2,...,an)的rank值集合R1'.
    比较R1和R1',是否R1'较R1有更好的区分度(即R1中相对较低的在R1'中是否更低,R1中相对较高的在R1'中是否更高)
    经过若干次迭代尝试,算出最优的i,c值。讨论到此完毕。

    自我感觉应该能拿到Offer.

    教训:算法分析能力太差,关于复杂度的问题一问一个砸。

    更新:拿到Offer.

  • 相关阅读:
    asp.net GDI+绘制矩形渐变
    asp.net GDI+把图片绘制成自定义的椭圆形状
    asp.net TreeView控件绑定数据库显示信息
    asp.net GridView控件中诗选全选和全不选功能
    PHP 笔记——会话控制
    PHP 笔记——String 字符串
    PHP 笔记——Web页面交互
    PHP 笔记——PDO操作数据库
    PHP 笔记——操作MySQL数据库
    PHP 笔记——Array 数组
  • 原文地址:https://www.cnblogs.com/mdyang/p/2039028.html
Copyright © 2011-2022 走看看