zoukankan      html  css  js  c++  java
  • 面试题整理1

    1. 谈谈对C、C++、Java、C#、PHP、Python等编程语言的认识?
    C语言执行效率快,直接将人能识别的到吗转换成机器码,但是代码复杂代码多并且容易代码重复
    java , c# ,  python , PHP:执行效率会稍微慢一点,实现是将人能识别的代码转换成字节码,再将字节码转换成机器码。
    C#:windows运行,windows掏钱
    java  :学习难度大
    PHP:web开发,先入为主
    python代码简洁,简单易懂还有强大的类库,功能齐全
    View Code
    详细信息:http://www.cnblogs.com/0bug/p/8622742.html

    2. 谈谈你了了解的python种类以及相关特点?
    常用环境:web开发,爬虫,运维自动化,金融分析和人工智能
    python的分类很多,但是规则还是只有一个
    如果python需要删除某个旧版分的时候,会在更新的告诉下一个程序员,好让程序员准备好下下个版本的更新,而下下个版本就会删除该功能。
    由于python代码的强大,其他语言的解释器都能执行python的代码,解释器是开发这门语言的创始人创建好的。所以我们直观写代码执行
    View Code
    
    
    
    3. pep8规范
    代码编排:
      缩进:4个空格的缩进
      每行的最大的长度不能超过79,换行可以使用反斜杠,最好使用的是圆括号。换行点要在操作的符号的后面
      类和top-level函数定义之间空两行,类中定义的方法之间空一行,函数类逻辑无关的代码之间需要空一行。
    文档编排:
      不要再一句import导入多个模块。
      如果采用from XX import XX引用库,可以省略‘module.’,都是可能出现命名冲突,这时就要采用import XX
      模块内容的顺序:模块说明和docstring—import—globals&constants—其他定义。其中import部分,又按标准、三方和自己编写顺序依次排放,之间空一行
    详细信息:https://blog.csdn.net/MrLevo520/article/details/69155636
    View Code
     

    4. 字节码和机器器码的关系和区别?
    机器码:学习机器语言指令,也被称为原生码,是电脑CPU直接剋有读取的数据。
    字节码:是一种包含执行程序,由一序列op代码/数据对组成的二进制文件,字节码是一种中间码,它比机器码更加的抽象,需要直接编译后才能成为机器码的中间代码
    详细信息: https://www.cnblogs.com/qiumingcheng/p/5400265.html
    View Code
     

    5. 运算符:
        1. 求结果:2 & 5    :  # 10 & 101 => 000 => 0
        2. 求结果:2 ^ 5    :  # 10 ^ 101 => 111 => 1*2**0+1*2**1+1*2**2=1+2+4=7
        3. 求结果:1 or 3   :  1
        4. 求结果:1 and 3   :3
        5. 求结果:0 and 2 and 1   :0
        6. 求结果:0 and 2 or 1    :1
        7. 求结果:0 and 2 or 1 or 4    :1
        8. 求结果:0 or Flase and 1    :Flase
    View Code
    
    
    

    6. 三元运算写法和应⽤用场景?
    正确结果 if 条件 else 错误的结果 : 用于简单的if语句的判断

    7. Python3和Python2的区别?
    在python3 中print打印需要加上括号,range创建迭代对象的用法是非常流行的与python2中的xrange相同,除号/可以计算到精确一点的值
    在python2中print打印不需要括号,range与python3中的range不同,xrange与python3中的相同。除号/只能却道整数。
    详细信息:http://www.runoob.com/python/python-2x-3x.html


    8. ⽤用⼀一⾏行行代码实现数值交换:

    a = 1 

    b = 2
    a,b=b,a


    9. 谈谈Python的深浅拷⻉贝?以及实现⽅方法和应⽤用场景。
    浅拷贝:拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用的其他对象我不复制
    深拷贝:外围和内部元素都进行了拷贝对象本身,而不是引用。也就是,把对象复制一遍,并且该对象中引用的其他对象我也复制。
    1,切片可以应用于:列表、元组、字符串,但不能应用于字典。
    2,深浅拷贝,既可应用序列(列表、元组、字符串),也可应用字典
    View Code
    详细信息:https://blog.csdn.net/u014745194/article/details/70271868



    10.python2和python3中的int和long区别?
    python3中没有了long类型,只用int类型,python3中int类型就相当于python2中的long类型

    11. 布尔值为False的常⻅见值都有那些?
    分别有[],(),{},None,'',0,False

    12.range和xrange区别
    在python3中的range就相当于python2中的xrange,但是在python2中的range一上来就会生成一大堆的内存空间,但是在python3中
    就不会,他和python2中xrange一样,在需要某个值得时候生成他的内存空间,如果长时间不使用,就会自动清理这个内存空间


    13.字符串串、列列表、元组、字典每个常⽤用的5个⽅方法?
    str:
        split:分割
        strip:去掉两边的空格
        startswith:以什么开头
        endswith:以什么结尾
        lower:小写
        upper:大写
    list:
        append:追加
        insert:插入
        reverse:反转
        index :  索引
        copy:拷贝
    tuple:
        count:查看某个元素出现的次数
        index:索引
    dict:
        get:根据key取value
        items:用于循环,去除所有的key和value
        keys:取出所有的key
        values:去除所有的value
        clear:清空字典
    View Code
    
    
    

    14.lambda表达式格式以及应⽤用场景?
    Lambda匿名函数经常被用到filter(), map(), reduce(), sorted()函数中,这些函数的共同点是均需要函数型的参数,Lambda表达式正好适用
    一般定义调用一次的函数就可以使用Lambda函数
    详细信息:https://blog.csdn.net/vernice/article/details/46385131


    15.求结果:
    def num():
    return [lambda x: i*x for i in range(4)]
    print([m(2) for m in num()]) # [6,6,6,6]

    16.pass的作⽤用?
    pass一般用于占位语句,保持代码的完整性,不会做任何的操作


    17.求结果:

    v = dict.fromkeys(['k1','k2'],[])

    v[‘k1’].append(666)
 print(v)
 {'k1':[666],'k2':[666]}
    v[‘k1’] = 777

    print(v) {'k1':777,'k2':[666]}


    18.*arg和**kwarg作⽤用
    动态参数,一般在定义函数是,不知道需要传入几个参数,就可以使用这个来定义参数,然后再这个里面来取
    *args:按照位置传参的,将参数打包成一个元组
    *kwargs:按照关键字传入参数,将传入的参数打包成一个字典


    19.is和==的区别
    否是用于比较判断使用的,但是比较判断的内容不相同
    ==是python中比较的操作符号,一般是用来判断某些的值是否相同
    is是可以叫做同一比较符,是比较对象之间的身份信息是否相同。
    详细信息:https://www.cnblogs.com/CheeseZH/p/5260560.html


    20.⼀一⾏行行代码实现9*9乘法表
    print(' '.join([' '.join(['%s*%s=%2s' %(j,i,i*j) for j in range(1,i+1)]) for i in range(1,10)]))


    21.如何安装第三⽅方模块?以及⽤用过哪些第三⽅方模块?
    1 可以在pycharm里面的settings里面手动的添加第三方模块,
    2 在cmd终端可以使用pip install 安装第三方模块
    我用过的第三方模块大概有:requests,pymysql,DBUtils等等


    22.常⽤用模块都有那些?
    re,os,random,json,time等等


    23.re的match和search区别?
    match:尝试从字符串起始位置开始匹配如果没有就会返回None
    search:从字符的起始位置开始匹配,匹配到第一个符合的就不会去匹配了


    24.什什么是正则的贪婪匹配?
    匹配一个字符串没有节制,能匹配多少就去匹配多少,知道没有匹配的为止

    25.求结果:

    a. [ i % 2 for i in range(10) ]
 # [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
    b. ( i % 2 for i in range(10) ) # <generator object <genexpr> at 0x03535090>是一个内存地址
    b=(i%2 for i in range(10))for i in b: print(i)
    26.求结果:

    a. 1 or 2
 1
    b. 1 and 2
 2
    c. 1 < (2==2)
 Falsed. 1 < 2 == 2 True


    27.def func(a,b=[]) 这种写法有什什么坑?
    函数陷阱,列表是一个可变类型,可以在任何的地方修改他那里面的数据


    28.如何实现 “1,2,3” 变成 [‘1’,’2’,’3’]
    print('1,2,3'.split(','))


    29.如何实现[‘1’,’2’,’3’]变成[1,2,3]
    ([int(i) for i in ['1','2','3']])


    30.内置函数:map、reduce、filter的⽤用法和区别
    map:便利序列,为每一个序列进行操作,获取一个新的序列
    reduce:对于序列里面的所有内容进行累计操作
    ffilter:对序列里面的元素进行筛选,最终获取符合条件的序列。


    31.如何⽤用⼀一⾏行行代码⽣生成[1,4,9,16,25,36,49,64,81,100]
    print([i**2 for i in range(1,11)])


    32.⼀一⾏行行代码实现删除列列表中重复的值。
    print(list(set([1,2,4,5,3,1,5,6,1,9])))


    33.如何在函数中设置⼀一个全局变量量
    使用global就可以设置一个全局变量


    34.请⽤用代码简答实现stack。
    详细信息:https://www.cnblogs.com/chongyou/p/7099692.html
    Stack():创建一个新的空栈
    push(item):添加一个新的元素
    item到栈顶
    pop():弹出栈顶元素
    peek():返回栈顶元素
    is_empty():判断栈是否为空
    size():返回栈的元素个数
    class Stack:    
      def __init__(self):        
        self.items=[]    
      def is_empty(self): 
             return self.items==[]    
      def push(self,item):    
           self.items.append(item)    
    
      def pop(self):        
        return self.items.pop()    
      def peek(self):        
        return self.items[len(self.items)-1]    
      def size(self):        
        return len(self.items)
    if __name__ == '__main__':    
      stack = Stack()    stack.push("hello")    
      stack.push("world")    
      stack.push("lcg")    
      print(stack.size())   
      print(stack.peek())    
      print(stack.pop())    
      print(stack.peek())    
      print(stack.pop())    
      print(stack.peek())   
        print(stack.pop())
    View Code
    
    
    
    35.常⽤用字符串串格式化有哪些?%s,%d,也就是%占位符format:通过位置匹配和关键字匹配可以实现字符串的格式化


    36.如何理理解⽣生成器器和迭代器器?
    生成器:有yield关键字的函数就是一个生成器,生成器一定是一个迭代器
    有__iter__和__next__方法的对象就是一个迭代器,但是迭代器不一定是生成器
    详细信息:https://www.zhihu.com/question/20829330


    37.⽤用Python实现⼀一个⼆二分查找的函数。
    li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    def search(zhi,li,start=0,end=None):
        end = len(li) if end is None else end
        zj = (end - start) // 2+start
        if start<=end:
            if zhi>li[zj]:
                return search(3,li,start=zj+1,end=end)
            elif zhi<li[zj]:
                return search(3,li,start=start,end=zj-1)
            else:
                return zj
        return '找不到这个值'
    print(search(8,li)
    View Code
    
    
    38.求结果: 
a = (1)print(a)      # (1)
    b = (1,)print(b) # (1,)


    39.谈谈你对闭包的理理解?
    闭包函数就是内部的函数调用外部函数的变量,常用于装饰器。


    40.python递归的最⼤大层数是多少?
    998层



    41.os和sys模块的作⽤用?
    os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口;
    sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。



    42.谈谈你对⾯面向对象的理理解?以及三⼤大特性是如何理理解?
    面向对象是一种编程思想,以类的眼光来看待事物的一种方式。将有共同的属性和方法的事物封装到同一个类下面。
    封装:将有共同的属性和方法封装到到同一个类下面
    继承:将多个类的共同属性和方法封装到一个父类下,然后在用这些类来继承这个类的属性和方法
    多态:python天生是支持多态的。指的就是基类的同一个方法在不同的派生类中有着不同的功能



    43.如何⽣生成⼀一个随机数?
    random.random()random.randint(1,100)



    44.如何使⽤用python删除⼀一个⽂文件
    import os
    os.remove('文件名以及路径')



    45.⾯面向对象深度优先和⼴广度优先是什什么?
    在python2继承查找的顺序就是深度优先,意思就是按照一条路线找到底,第二次如果还会有这些类,就不会再去查找
    python3中继承查找的顺序就是官渡优先,意思就是从左到右查找,找到他们的祖先,只要不是共同的祖先,就会继续查找,如果共同的祖先类,就会在找完他的最后一个派生类的时候就要去查找共同的祖先


    46.⾯面向对象中super的作⽤用?
    主要用于子类继承父类的所有属性和方法


    47.是否使⽤用过functools中的函数?其作⽤用是什什么?
    用于装饰器中,functools.wraps() :主要是用来修复装饰器



    48.如何判断是函数还是⽅方法?
    看他的调用者是谁,如果是类,需要传入一个参数self的值,这时他就是一个函数,如果调用者是对象,不需要给self传入参数值,这时他是一个方法



    49.静态⽅方法和类⽅方法区别?
    尽管 classmethod 和 staticmethod 非常相似,但在用法上依然有一些明显的区别。classmethod 必须有一个指向类对象的引用作为第一个参数,而 staticmethod 可以没有任何参数。



    50.列列举⾯面向对象中的特殊成员以及应⽤用场景
    __call__
    __new__
    __init__
    __doc__
    __class__
    __del__
    __dict__
    __str__
    在falsk源码用到......
    View Code
    
    
    
    51. 1、2、3、4、5 能组成多少个互不不相同且⽆无重复的三位数import itertoolsprint(len(list(itertools.permutations('12345',3))))


    60个
    题意理解:
    组成后的数值不相同,且组合的三个位数之间数字不重复。
    使用python内置的排列组合函数(不放回抽样排列)
    product 笛卡尔积  (有放回抽样排列)
    permutations 排列  (不放回抽样排列)
    combinations 组合,没有重复  (不放回抽样组合)
    combinations_with_replacement 组合,有重复  (有放回抽样组合)



    52.什什么是反射?以及应⽤用场景?
    反射就是以字符串的方式导入模块,以字符串的方式执行函数应用的的场景在rest framework里面的CBV


    53.metaclass作⽤用?以及应⽤用场景?
    用来指定指定某个类是由哪个类创建的
    应用场景在于: 为了当创建类使能够自动地改变类。 通常会为API做这样的事情,希望可以创建符合当前上下文的类。



    54.⽤用尽量量多的⽅方法实现单例例模式。
    详细信息:https://www.cnblogs.com/huchong/p/8244279.html
    详细实例:http://www.cnblogs.com/fangjie0410/p/8729265.html



    55.装饰器器的写法以及应⽤用场景。
    详细信息:http://www.cnblogs.com/fangjie0410/p/7459976.html



    56.异常处理理写法以及如何主动跑出异常(应⽤用场景)
    详细信息:http://www.cnblogs.com/fangjie0410/p/7515445.html



    57.什什么是⾯面向对象的mro
    解析类继承的查找顺序,再不知道继承顺序的情况下,可以使用这个来查找
    详细信息:http://python.jobbole.com/85685/58.isinstance

    58.isinstance作用以及应用场景?
    作⽤用以及应⽤用场景?用来判断一个对象是否是这个类以及他的子类的实例



    59.什什么是断⾔言?应⽤用场景?
    assert断言:声明其布尔值为真,如果断言失败就会抛出异常一般用于人的测试环节



    60.写函数,实现功能:给定一个整数数组,返回这两个数字的索引,使它们合计成一个特定的目标。你可以假设每个输入都有一个解决方案。
    li=[1,2,3,4]
    def func(nums,li):
        li1=[]
        for i in range(len(li)):
            for j in range(i+1,len(li)):
                if li[i]+li[j]==nums:
                    li1.append([i,j])
        return li1
    
    print(func(5,li))
    View Code
    
    
    
    
    
  • 相关阅读:
    Jsuop Whitelist
    Conductor
    nats
    jersey
    Metrics
    OpenResty api 网关
    DHCP、DHCP Snooping及DHCP relay工作原理入门及实践(转)
    使用派生镜像(qcow2)
    websockify文档
    noVNC使用——访问多台vnc
  • 原文地址:https://www.cnblogs.com/fangjie0410/p/8729442.html
Copyright © 2011-2022 走看看