美文网首页工作生活
面试经典试题

面试经典试题

作者: 重新崛起 | 来源:发表于2019-07-04 22:21 被阅读0次

    1,实现一个Memcpy函数(C/C++)
    从源src所指的内存地址的起始位置开始,拷贝n个字节的数据到目标dest所指的内存地址的起始位置中。
    dest和src没有重叠或者dest在左有部分重叠我们都是用从前往后复制。如果dest在右并且有部分重叠,我们选用从后往前复制。
    2,给定N张扑克牌和一个随机函数,设计一个洗牌算法。

    3,(智力题)25匹马,每个跑道最多能有1匹马进行比赛,最少比多少次能比出前3名,前5名?
    4,100亿个整数,内存足够,如何找到中位数?内存不足如何找到中位数?
    内存足够可以使用类似快速排序的方法;内存不足可以采用分桶法,例如字节的首位是0或1,然后缩小范围,直到可以在内存中运行。

    5,请简述智能指针原理,并实现一个简单的智能指针。(C/C++)

    6,如何处理循环引用问题。
    垃圾回收中的引用计数法不能处理循环引用的问题,可以使用标记清除的算法从GCroot进行可达性分析。

    7,单例模式,要求线程安全

    8,如何定义一个只能在堆上(栈上)生成对象的类(C/C++)

    9,引用和指针的区别
    本质:引用是别名,指针是地址,具体的:
    指针可以在运行时改变其所指向的值,而引用不会,它仅仅是一个别名
    在参数传递时,引用会做类型检查,而指针不会
    引用不能为空,指针可以为空

    10(智力题)1000个灯围成一个环,初始状态是熄灭的,按下一个灯,它及它的左右两盏灯的状态会改变,问如何让所有的灯都亮?
    依次按下每一个灯

    11,(智力题)n条直线最多能将一个平面分成几部分?
    f(n)=n(n+1)/2+1

    12,(智力题)n个平面最多能将一个空间切成多少部分

    13,n个人,其中只有一个明星,所有人都认识这个明星,这个明星其他人一个都也不认识,如何找到这个明星?如果n很大很大,如何改进你的算法。
    线性扫描,两两比较,每次都能排除一个人,如果a认识b那么a就不是明星,如果a不认识b,那么b就不是明星。

    14,给50个硬币,面值可以不同,排成一排,两个人轮流取,只能从两端取,先取的人如何保证取到的币值大于等于另一个人?
    如果奇数位的数和比较大,则取第一个硬币,后面跟着取奇数位的硬币。如果偶数位的和比较大,则取最后一个硬币,后面跟着取偶数的硬币。

    相关文章

      网友评论

        本文标题:面试经典试题

        本文链接:https://www.haomeiwen.com/subject/muklhctx.html