• 转:Google全程面试题目(未完成)


    转自:http://kb.cnblogs.com/page/95951/

    经过了三个月的断断续续的面试和准备,最近一阵抓了很多时间努力准备, 本以为最后的一次面试能弥补前面的不足,可惜还是功亏一篑... 想想主要是自己编程水平不行,不能快速的写出bug free code,另外 design和算法方面有差距,另外是前面的准备不足,后面拼命努力最终还是无补 :( 把面试题给大家分享,希望大家都能拿到满意的offer。

      1) 一个range的序列(链表或数组),如[1,3], [2,6], [8,10],[15,18] 写程序合并有重叠的range,比如上面的序列合并为[1,6], [8,10], [15,18] 如果这个序列不是静态的,而是一个数据流,如何 处理?

       后来听说了interval tree,不过还是不太清楚具体如何解决,有大牛能详细说说么?

      2) 利用快速排序的划分方法,把数组分成三部分,< val, = val, val。

      后来发现 programming peals 上有原题..

      3) 对于google查询的词组成的动态的数据流,在任意时刻取出10个完全随机的查询。

      当时死活没答上来,后来在板上发现是经典的 reservior sampling,早点到板上看面经就好了..

       4) 把一个字符串转换成32bit的整数 = 要注意处理溢出的情况

      5) 在一个数组中寻找三个数,使得它们的和为0

      这个是找两个和为0的数的扩展

      6) 大概是用一位数组来表示二维数组,但是每一行的元素个数可以不同,实现get,set函数

      这个算是比较简单的

      7) 已知每个待查找的字符串长度为10,如何在一个很长的字符串的序列里快速查找这样的字符串

      当时的思路是,遍历字符串把所有长度为10的的字符串算出累加值, 类似于 sum = a0 * 10 + a1 * 10^2 + ... + a9 *10^9,然后用这个sum 做hash,面试官ms觉得还马马虎虎。应该有更好的办法。

       8) 写程序生成边长为n的如下的方阵 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 = 顺时针生成即可,注意边界条件

      9) 应用程序的re-order的buffer的设计,如果满了可以丢弃 大概是应用程序需要in order的数据包,但是收到的数据可能是乱序的(类似于IP分片,每一个数据片有一个序列号,但是不同的数据片 到达应用程序的顺序可能和发送的顺序不一样,引起乱序)。然后有 一个buffer,可以存放几个数据片,问如何设计算法通过这个buffer 把数据片变成有序。说了仿照IP分片重组,设置timer再加上ack来做, 面试官好像不太满意。

      10) 假设有很多多边形,最大的是地球,每一个国家可以认为是一个多边形,每一个省 ,市,区,小区,楼都可以认为是一个多边形,这些多边形之间要么是相互包含的,要么是互相没有交集的,(不存在overlap的情况)。给出一个多边形,要求写程序求出最小的包含它的多边形。已知有现成的函数可以判断两个多边形是否相互包含, iscontained(poly p1, poly p2)。

      如何加速?如果在多机的情况下呢?

      可以用树结构表示包含的关系。可以用二分搜索做加速。多机的话可以range一个机器处理一个区域,另外要考虑前端处理机的负载不要成为瓶颈,所以让每个机器自己判断此多边形是否包含。

  • 相关阅读:
    kylin_学习_00_资源帖
    Saiku_学习_03_Saiku+Kylin构建多维分析OLAP平台
    Saiku_学习_02_Schema Workbench 开发mdx和模式文件
    Tomcat_总结_02_单机多实例
    Saiku_学习_01_saiku安装与运行
    【HDU】1693 Eat the Trees
    【Ural】1519. Formula 1
    蒟蒻修养之tc蓝名计划
    【UVa】11270 Tiling Dominoes
    【POJ】2406 Power Strings
  • 原文地址:https://www.cnblogs.com/kira2will/p/4009871.html
Copyright © 2020-2023  润新知