某小公司的笔试题

1、什么是类变量与实例变量
类变量为所有实例共享,实例变量为为实例独有。
2、__init__ 与 __new__的含义
__new__作用于_init_之前。前者可以决定是否调用后者,或者说可以决定调用哪个类的_init_方法。
__new__ 方法负责创建一个实例对象,__init__ 方法负责将该实例对象进行初始化
3、调度算法有哪些,分别有哪些优势
在操作系统中调度是指一种资源分配,因而调度算法是指:根据系统的资源分配策略所规定的资源分配算法。对于不同的的系统和系统目标,通常采用不同的调度算法,例如,在批处理系统中,为了照顾为数众多的段作业,应采用短作业优先的调度算法;又如在分时系统中,为了保证系统具有合理的响应时间,应当采用轮转法进行调度。目前存在的多种调度算法中,有的算法适用于作业调度,有的算法适用于进程调度;但也有些调度算法既可以用于作业调度,也可以用于进程调度。

  • FCFS算法
  • 轮转法
  • 多级反馈队列算法

4、红黑树与AVL树之间的区别
红黑树的查询性能略微逊色于AVL树,因为他比avl树会稍微不平衡最多一层,也就是说红黑树的查询性能只比相同内容的avl树最多多一次比较,但是,红黑树在插入和删除上完爆avl树,avl树每次插入删除会进行大量的平衡度计算,而红黑树为了维持红黑性质所做的红黑变换和旋转的开销,相较于avl树为了维持平衡的开销要小得多
5、python的垃圾回收机制

  • 引用计数
    原理:当一个对象的引用被创建或者复制时,对象的引用计数加1;当一个对象的引用被销毁时,对象的引用计数减1,当对象的引用计数减少为0时,就意味着对象已经再没有被使用了,可以将其内存释放掉。
  • 分代回收
    原理:将系统中的所有内存块根据其存活时间划分为不同的集合,每一个集合就成为一个“代”,Python默认定义了三代对象集合,垃圾收集的频率随着“代”的存活时间的增大而减小。也就是说,活得越长的对象,就越不可能是垃圾,就应该减少对它的垃圾收集频率。那么如何来衡量这个存活时间:通常是利用几次垃圾收集动作来衡量,如果一个对象经过的垃圾收集次数越多,可以得出:该对象存活时间就越长。

6、N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式?

  • 思路一:设有x次走一阶,y次走两阶,则一定满足x+2*y=n,且x、y均为整数,那么对于任何一个满足的x的可能走法共有C(x+(n-x)/2,x)种走法,即从数x+(n-x)/2中取x种组合,值为(x+(n-x)/2)的阶乘除以x的阶乘与(n-x)/2的阶乘的乘积。
def fic(n):
    if n == 1 or n == 2:
        return n
    elif n >= 3:
        return fic(n - 1) + fic(n - 2)
    else:
        return -1

print(fic(5))

7、现在有一个台阶,一共有n阶,你一次性可以走1步、2步、3步、…、n步。问:一共有多少种走法。

def fic2(n):
    step=0
    for i in range(1, n+1):
        step += fic(n-1)
    return step

print(fic2(5))

猜你喜欢

转载自blog.csdn.net/weixin_40327641/article/details/82873234