zoukankan      html  css  js  c++  java
  • 微软实习电面(一)

    这次电面是Live Meeting+电话(为什么不用Live Meeting里的语音功能?)

    1. 现在有一个无序序列,如何取得最小的n个数(无需有序输出)?

    1/ 最简单的,可以用排序,然后就问怎么排序,我回答快排,于是让我实现快排(汗,不让用STL,要写native代码),于是习惯std::sort和std::qsort的我泪奔了。

    速度写出快排函数(估计bug若干)。算过关吗?

    2/ 让我改进一下,记得《编程之美》里有个类似的问题(见2.5节),于是把快排改进了一下,搞了一个划分预处理。

    继续code. 挣扎着在原来的快排上改出来了,估计bug更多。

    对面好像没看懂我的思路(也怪我函数命名有问题),于是解释了一下划分的方法。

    3/ 继续改进,问能不能通过迭代的方法划分出刚刚好n个元素输出(因为快排的划分中左/右)?

    这个没做出来就说PASS了,下一题。

    其实用堆做才是最给力的。

    2. 现在有一个数据文件,里面是key-value(key不重复,value为变长block),共1M对,数据文件大小4G左右,如何对其按照key进行排序?

    就答了个外排序,先划分文件,然后文件内用内排序,文件间归并(外排),没让code,也没深入问。

    面完后问对方具体做什么,大概是新闻搜索中新闻聚合一类的工作。

    然后问面试表现,对方表示不能讲(是不是不该问这个)。

    最后请求他们一定给反馈(不管是accept还是reject),得到肯定答复后结束。

    教训:不仅要熟悉高抽象层次的算法(分治、动规、贪心等),还要对基础的算法/数据结构(线性表/树/堆/图/排序/查找等)有熟悉、牢固的掌握,只会调调std::sort之类是远远不够的。

  • 相关阅读:
    86. Partition List
    328. Odd Even Linked List
    19. Remove Nth Node From End of List(移除倒数第N的结点, 快慢指针)
    24. Swap Nodes in Pairs
    2. Add Two Numbers(2个链表相加)
    92. Reverse Linked List II(链表部分反转)
    109. Convert Sorted List to Binary Search Tree
    138. Copy List with Random Pointer
    为Unity的新版ugui的Prefab生成预览图
    ArcEngine生成矩形缓冲区
  • 原文地址:https://www.cnblogs.com/mdyang/p/2037814.html
Copyright © 2011-2022 走看看