面试题记录

实习被虐

记录自己实习阶段被虐倒的题目,以及正确答案

6.4 谷露软件

关于python

  • 类方法和静态方法的区别

    • 类方法:类方法需要用类去调用,而不是实例对象调用
      • 关键字 @classmethod
      • 函数例子 def classfun(cls) 参数为cls
    • 静态方法:静态方法没有参数
      • 关键字 @staticmethod
      • 函数例子 def staticmethod() 无参数
  • python类中__init____new__ 方法的区别

    • __new__静态方法
      • 调用时间:对象创建之前被调用
      • 作用:创建实例并返回
    • __init__实例方法
      • 调用时间:对象创建完成后调用
      • 作用:设置对象的初始值
  • 如何获取对象的所有方法和属性

    • 所有属性:

      def prn_obj(obj): 
        print '\n'.join(['%s:%s' % item for item in obj.__dict__.items()]) 
      

    使用对象的__dict__属性可以得到所有属性

    • 查看其所有属性与方法

      dir(obj)
      
  • python中命名空间和作用域

    • 命名空间

      三种命名空间

      • 内置名称(built-in names), Python 语言内置的名称,比如函数名 abs、char 和异常名称 BaseException、Exception 等等。
      • 全局名称(global names),模块中定义的名称,记录了模块的变量,包括函数、类、其它导入的模块、模块级的变量和常量。
      • 局部名称(local names),函数中定义的名称,记录了函数的变量,包括函数的参数和局部定义的变量。(类中定义的也是)
    • 作用域:

    • 有四种作用域:

      img

      • L(Local):最内层,包含局部变量,比如一个函数/方法内部。
      • E(Enclosing):包含了非局部(non-local)也非全局(non-global)的变量。比如两个嵌套函数,一个函数(或类) A 里面又包含了一个函数 B ,那么对于 B 中的名称来说 A 中的作用域就为 nonlocal。
      • G(Global):当前脚本的最外层,比如当前模块的全局变量。
      • B(Built-in): 包含了内建的变量/关键字等。最后被搜索
  • python如何实现有序字典

    • 有序字典:collections库有的OrderedDict,迭代时,可以保持Key的顺序

    • 如何实现:

      class MyDict(dict):   #有序字典实现
      
          def __init__(self):
              self.li = []
              super(MyDict,self).__init__()
      
          def __setitem__(self, key,value):
              #利用li来存储Key的顺序
              self.li.append(key)
              super(MyDict,self).__setitem__(key,value)
      
          def __str__(self):
              temp_list = []
              for key in self.li:
                  value = self.get(key)
                  temp_list.append("'%s':%s" %(key,value,))
              temp_str = '{' + ','.join(temp_list) + '}'
              return temp_str
      obj = MyDict()
      obj['k1'] = 123
      obj['k2'] = 456
      print(obj)
      
  • 深拷贝和浅拷贝

    • 可变对象和不可变对象:

      • 不可变对象:所指向的地址上值是不能修改的

        • 通常来讲不可变元素包含:

          int,float,complex,long,str,unicode,tuple

      • 可变对象:在不改变其所指向的地址的前提下,可以修改其所指向的地址中的值

        • 例如:list,dict,set
    • 浅拷贝:

      • 特点:仅拷贝不可变对象不拷贝可变对象

      • 方法:import copy copy.copy(obja)

      • 实例:

        import copy
        a = [1,2,['a','b','c'],4]
        
        b = copy.copy(a)
        print(a);print(b)
        # [1, 2, ['a', 'b', 'c'], 4]
        # [1, 2, ['a', 'b', 'c'], 4]
        
        a.append(5)
        print(a);print(b)
        # [1, 2, ['a', 'b', 'c'], 4, 5]
        # [1, 2, ['a', 'b', 'c'], 4]
        
        a[2].append('d')
        print(a);print(b)
        #[1, 2, ['a', 'b', 'c', 'd'], 4, 5]
        #[1, 2, ['a', 'b', 'c', 'd'], 4]
        
    • 深拷贝

      • 特点:拷贝可变对象和不可变对象

      • 方法:copy.deepcopy(a)`

      • 实例:

        import copy
        a = [1,2,['a','b','c'],4]
        
        c = copy.deepcopy(a)
        print(a);print(c)
        # [1, 2, ['a', 'b', 'c'], 4]
        # [1, 2, ['a', 'b', 'c'], 4]
        
        a.append(5)
        print(a);print(c)
        # [1, 2, ['a', 'b', 'c'], 4, 5]
        # [1, 2, ['a', 'b', 'c'], 4]
        
        a[2].append('d')
        print(a);print(c)
        #[1, 2, ['a', 'b', 'c', 'd'], 4, 5]
        #[1, 2, ['a', 'b', 'c'], 4]
        

关于数据库

  • MySQL的驱动引擎有哪些
  • 数据库事务的四个特性是什么
  • 事务的隔离级别

关于网络

  • http协议和https协议的区别
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值