zoukankan      html  css  js  c++  java
  • 每日一问:

    1 python中id、is、=、== 分别是比较什么的?
    id 查看内存地址,is是比较内存地址是不是相同,=是赋值,==比较的是变量的值



    2 说说python的小数据池(了解即可,面试偶尔会问到)。
    python中数字。在一定规则范围内,如果同时定义多个相同值的数字类型或字符串类型变量,他们会共用一个内存地址。可以用 is 验证。
    数字:范围在 -5~256
    小数据池的目的是节省内存空间。


    1 alist = [{'name':'alex', 'age':20}, {'name':'luffy', 'age':2}, {'name':'egon', 'age':30}, {'name':'peiqi', 'age':30}, ]
    根据alist中的age由大到小进行排序
    解法1:
    alist.sort(key=lambda x: x['age'], reverse=True)
    解法2:
    import operator
    alist.sort(key=operator.itemgetter('age'), reverse=True)



    在python当中如何获取命令行参数?
    知识点python的sys模块
    import sys
    sys.argv # 接收用户输入的命令行参数


    int 的使用
    num = int('111', 2)
    print(num)
    # 会报错吗?会请说出理由,不会请给出结果

    输出的是7 。不会报错, 因为int 接收两个参数, 第二个参数是进制的意思, 范围在 2-32。

    111  会 被当作2进制的数, 转换成十进制的 7



    python2中有range和xrange,这两个有什么区别?

    py2 中的range 会一次性将数据全部创建出来, xrange 则是一个生成器 会在调用的时候才会输出值 不会一次性创建太多的数据。


    如果模块是被导入的__name__的值是什么,如果是被执行的__name__的值又是什么?
    请给出答案,时间方便可以可以说明解题过程

    ------被导入的时候  __name__ 的值是。这个模块的文件名。 被执行时 __name__ == "__main__"



    2 请用python实现99乘法表。

    for i in range(1, 10):
        for j in range(1, i+1):
            print("%d * %d = %d" % (i, j, i*j), end="   ")
        print()

    multi_table = ["%d * %d = %d" % (j, i, i * j) for i in range(1, 10) for j in range(1, i+1)]


     1 文件操作中f = open(filename, mode, code),执行写入f.write('hello world'),请问hello world 是写进了文件还是只是存在内存当中?如何使写的内容主动存储到文件中。
    f.write时间内容写到计算机的内存中
    存储到文件:
        f.close()# 文件关闭,会自动将内容从内存存储到文件中
        f.flush()# 主动将内容从内存存储到文件中
    2 如何调整文件中的指针?
        f.seek()
    3 说下truncate的作用。
        如果指定了 size 则从size处往后都截断清除,不指定size从指针处往后都截断


     1 给出最后print的结果
        def multipliers():
        return [lambda x : i * x for i in range(4)]
        print([m(2) for m in multipliers()])

    [6,6,6,6]

    lambda  不会保存变量的值。 他使用的是 i 变量的一个引用。    i 变量再循环完成之后,指向了 3.  所以 lambda 中的 i  都是 3.   打印时 3*2  都是6.



    2 下面代码的执行结果是什么?
    num = 5
    def func():
        num = 10
        print('func', num)

    def func2():
        print('func2', num)
    func()    # 10
    func2()    # 5



    3 以下代码的执行效率怎么样,会不会慢,慢在哪?
    def func(num):
        s = 'first'
        for i in range(num):
            s += 'luffy'
        return s

    会慢! 因为使用的是 + 拼接字符串。 因为字符串是不可变类型。所以每次拼接都会去申请新的内存空间 来存放新的值。从而导致变慢。


    1 一行代码实现1-100的求和,一行代码实现1-100奇数求和,一行代码实现1-100偶数求和。

    sum(range(1, 101)),sum(range(1, 101, 2)),sum(range(2, 101, 2))



    2 字符串的拼接可以使用+和join完成,两者有什么区别?

    字符串属于不可变数据类型,每执行一次+都会申请一块新的内存地址,因此用+号连接的时候,会有多次的内存申请和复制,

    而使用join在连接字符串的时候,会先计算需要多大的内存存放结果,然后一次性的申请所需呀的内存,字符串拼接的时候建议使用join



    3 python的自省是指的什么?

    python的自省是指在程序执行的过程中,能够知道对象的类型。(自动的判断)


    1 什么是闭包函数,闭包函数满足什么样的条件?请写一个常见的闭包函数。

    闭包函数本质就是函数的嵌套和高阶函数。
    1)必须嵌套函数
    2)内嵌函数必须引用一个定义在闭合范围内(外部函数里)的变量——内部函数引用外部变量
    3)外部函数必须返回内嵌函数——必须返回那个内部函数



    2 什么是递归函数?在递归函数的使用中要注意什么地方?

    递归函数就是自己调用自己。

    注意:

    1. 递归函数需要明确的有一个 结束的条件。否则就会无限递归 从而超出python最大的递归深度。(sys 模块可修改递归深度,默认是1000)

    2. 每次进入一层递归,问题的规模都应该比上一层有所减小。

    3. 递归效率不高。 只用于特别的地方。



    3 请用递归函数实现10的阶乘:10*9*8*7....*1

    
    
    def factorial(num):
        if num <= 1:
            return 1
        return num * factorial(num-1)

     1 在不改变列表中数据排列结构的前提下,找出以下列表中最接近最大值和最小值的平均值 的数  li = [-100,1,3,2,7,6,120,121,140,23,411,99,243,33,85,56]

    li = [-100, 1, 3, 2, 7, 6, 120, 121, 140, 23, 411, 99, 243, 33, 85, 56]
    mid = (max(li) + min(li)) / 2
    res = abs(li[0] - mid)
    
    result = None
    for i in li:
        curr_min = abs(i - mid)
        if curr_min < res:
            res = curr_min
            result = i
    print(result)


    2 写一个configparser模块的应用小示例



    3 利用random模块写一个6位的随机验证码,验证码内包含字母、数字(随机出现)

    s = string.ascii_lowercase + string.digits
    
    print(random.sample(s, 6))

    1 以下代码执行的结果,如果出现错误请说明错误原因。

    def calc(a, b, c, d=1, e=2):
      return (a+b)*(c-d)+e
    
    print(calc(1, 2, 3, 4, 5))
    print(calc(1, 2, 3))
    print(calc(1, 2))
    print(calc(1, 2, 3, e=4))
    print(calc(e=4,c=5, a=2, b=3))
    print(calc(1, 2, 3, d=5, 4))

    2 re模块中,search、match、findall的作用分别是什么?

    search  的作用是,找到字符串中符合匹配模式的, 第一个匹配项。 然后就返回结果,不在继续匹配。

    match  的作用是, 从字符的开始进行匹配,  如果有符合匹配模式的匹配项就返回,否则就返回 None

    findall  的作用是, 从字符串中找到所有的符合匹配模式的匹配项,饭后保存到列表中返回,  否则返回 None


    1 python的内置模块有哪些?【不少于10个】。



    2 logging模块的作用,以及使用场景,写一个简单的日志模块。可以在其他模块中调用。



    3 以下代码执行的结果,并说明理由。

    def func(a):
      print(a)
      print(b)
      b=9    # 如果这一行注释了会发生什么?为什么?
    b = 6 func(3)

    1 subprocess模块的作用是什么?如何使用subprocess执行查看/bin/目录下的存在我文件或者目录



    2 一下代码执行的结果是什么?

    li = [ [ ] ] * 5
    print(li) # output?
    li[0].append(10)
    print(li) # output?
    li[1].append(20)
    print(li) # output?
    li.append(30)
    print(li) # output?


    3 用户输入一个时期格式:2019-07-26返回是一年中的第几天?


    1 什么是面向对象?相比较于函数编程,面向对象有什么优点?



    2 什么是类、属性、方法、实例(对象)、实例化?



    3 面向对象的特点是什么?


    1 python为类内置的特殊属性,假设类名为People,说一下下面这些特殊属性的作用。
    People.__dict__
    People.__module__
    People.__doc__



    2 python的类中有哪两种属性,分别是什么?不同的属性分别是属于谁?



    3 编写一个学生类,产生一堆学生对象,要求有一个计数器【属性】,统计一共实例了多少对象。

    Class Student(object):
      count = 0 # 计数器 def __init__(self,):
        Student.count += 1

    # 未完成   以后再说


    1 类的属性和对象属性有什么区别?

    类属性 在类定义的阶段就会, 添加到类的名称空间中。  并且是所有对象共享的。  (如果没有进行私有化的话)。

      对象属性是类中  函数自己的名称空间中的属性, 只有对象才可以访问到。  类本身无法进行访问。



    2 类和对象在内存中是如何保存的?



    3 什么是绑定到对象的方法、绑定到类的方法、非绑定方法,这些方法有什么特点?

    @classmethod  绑定到类的方法。 类进行访问时,可自动传值。


    1 python中的经典类和新式类有什么区别?

    在python 2中,加不加括号,都是表示经典的类,而如果括号里指明继承object,则为新式类。

    python 3中,不管加不加括号,不管指不指明继承object,都是新式类。 新式类和经典类最大的不同也在这里,  新式类必须要有一个继承。

    经典类和新式类的区别就在于,一个是深度优先查, 一个是 广度优先的查询。

    经典类遵循深度优先的法则进行,属性和方法的查询。  新式类 遵循广度优先的法则进行属性和方法的查询。

     可以使用   类名.mro()  来查看,当前这个类的(Method resolution Order) 方法解析顺序。



    2 以下代码经典类和新式类的继承顺序是什么?
    class A(object):
    def test(self):
    print('from A')

    class B(A):
    def test(self):
    print('from B')

    class C(A):
    def test(self):
    print('from C')

    class D(B):
    def test(self):
    print('from D')

    class E(C):
    def test(self):
    print('from E')

    class F(D,E):
    # def test(self):
    # print('from F')
    pass



    3 在面向对象中如何把属性变成私有属性?私有属性的意义是什么?


    1 Python中staticmethod,和classmethod的作用是什么?



    2 以下代码有何问题,应该如何纠正?@property的作用是什么?
    class Dog(object):
     
       def __init__(self,name):
           self.name = name
     
       @property
       def eat(self):
           print(" %s is eating" %self.name)
     
    d = Dog("dog")
    d.eat()


    1 在元类中控制把自定义类的数据属性都编程大写。



    2 在类中,参数self是否可以替换成其他的变量?



    3 __slots__属性的作用是什么?


    1 以下代码的运行结果?
    class Dog:
        __slots__ = ('name')
        
        def __init__(self, name):
            self.name = name
            
        def test(self):
            print('预先定义的test方法')

    d = Dog('Snoopy')
    d.age = 5



    2 enumerate函数的用法如下,请用python实现enumerrate函数。
    li = ['a', 'b', 'c', 'd']
    for index, item in enumerate(li):
    print(index, item)
    输出结果:
    0 a
    1 b
    2 c
    3 d


    1 在python中in操作 对于list, set, tuple, dict 效率如何?简要说明下。



    2 模仿王者荣耀定义两个英雄类
    要求:
    英雄需要有昵称、攻击力、生命值等属性;
    实例化出两个英雄对象;
    英雄之间可以互殴,被殴打的一方掉血


    1 python中异常处理的作用是什么?什么是万能异常?如何在一段代码上加万能异常?



    2 以下代码执行的结果,报错请说明原因?
    class Func:
        def __init__(self, name):
            self.name = name

        def name(self):
            print("hello world!")

    f = Func('alex')
    ret = hasattr(f, 'name')
    print(ret)
    fun = getattr(f, 'name')
    fun()


    1 如何让类多次实例化的时候只有一个实例?

    1 如何让类多次实例化的时候只有一个实例?
    一个类多次实例化只获得一个实例,这是一种设计模式(单例)。
    单例模式保证了在程序的不同位置都 可以且仅可以取到同一个对象实例 :如果实例不存在,会创建一个实例;如果已存在就会返回这个实例。因为单例是一个类,所以你也可以为其提供相应的操作方法,以便于对这个实例进行管理。
    简单的装饰器版本,进攻参考
    def singleton(cls):
        _instance = {}
        def inner(*args, **kwargs):
            if cls not in _instance:
                _instance[cls] = cls(*args, **kwargs)
            return _instance[cls]
        return inner
        
    @singleton
    class Cls(object):
        def __init__(self):
            pass
    cls1 = Cls()
    cls2 = Cls()
    print(id(cls1) == id(cls2))



    2 用两个队列实现一个栈。
    后进先出:后放进去先拿出来。

    class Stock:
        def __init__(self):
            self.queueA=[]
            self.queueB=[]
        def push(self, node):
            self.queueA.append(node)
        def pop(self):
            if len(self.queueA)==0:
                return None
            while len(self.queueA)!=1:
                self.queueB.append(self.queueA.pop(0))
            self.queueA,self.queueB=self.queueB,self.queueA #交换是为了下一次的pop
            return self.queueB.pop()
    测试一下是否成功实现了栈
    if __name__=='__main__':
        times=5
        testList=list(range(times))
        testStock=Stock()
        for i in range(times):
            testStock.push(testList[i])
        print(testList)
        for i in range(times):
            print(testStock.pop(),',',end='')  


    1 什么是计算机网络?计算机网络的作用是什么?



    2 OSI七层模型分别是什么,请简要说明每一层的作用?


  • 相关阅读:
    virtualbox 设置鼠标在虚拟机和电脑之间切换
    7-nginx 配置记录 http 请求参数(如记录URL参数)的 log 和 nginx 常见的一些内置变量
    BufferedWriter 没有比FileWriter 快多少
    锁、线程锁、锁旗标、锁对象
    all 2 branches missed
    使用xmp path进行行变列的SQL语句
    程序员的健身课
    zookeeper启动报错:Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain
    clickhouse数仓:mysql数据到clickhouse的离线、实时与全量、增量的方案调研
    sql语句分为三类(DML,DDL,DCL)
  • 原文地址:https://www.cnblogs.com/chengege/p/11134255.html
Copyright © 2011-2022 走看看