奇酷教育-Python培训|UI培训|WEB大前端培训|Unity3D培训|HTML5培训|人工智能培训|JAVA开发的教育品牌

您現在所在的位置:首頁 >學員就業 > 就業寶典 > Python 大神總結出來的10個經典面試題

Python 大神總結出來的10個經典面試題

來源:奇酷教育 發表于:

大神總結出的10個經典面試題。

  Python作為人類最有愛/最友愛的編程語言,可以勝任 AI 領域、Web 開發、GUI 開發、Office 操作、網絡及爬蟲、圖形圖像、樹莓派、各類工具等等,同時開發效率非常高。

  因此,目前對Python工程師的需求量也是挺大的,下面就羅列出大神總結出的10個經典面試題。
 
  一、如何添加代碼,使得沒有定義的方法都調用 mydefault 方法?
 
  class A(object)
    def __init__(self, a, b):
      self.a1 = a
      self.b1 = b
    def mydefault(self):
      print 'default'
 
  a1 = A(10, 20)
  a1.fn1()
  a1.fn2()
  a1.fn3()
 
  答案:
  class A(object)
    def __init__(self, a, b):
      self.a1 = a
      self.b1 = b
      print 'init'
    def mydefault(self):
      print 'default'
    def __getattr__(self, name):
      return self.mydefault
 
  a1 = A(10, 20)
  a1.fn1()
  a1.fn2()
 
  此題考查的是 Python 的默認方法,只有當沒有定義的方法調用時,才會調用方法 __getattr__ 。當 fn1 方法傳入參數時,我們可以給 mydefault 方法增加一個 *args 不定參數來兼容。
 
  class A(object)
    def __init__(self, a, b):
      self.a1 = a
      self.b1 = b
      print 'init'
    def mydefault(self, *args):
      print 'default' + str(args[0])
    def __getattr__(self, name):
      print "other fn:",name
      return self.mydefault
 
  a1 = A(10, 20)
  a1.fn1(33)
  a1.fn2('hello')
 
 
  二、下面這段代碼輸出什么?
 
  num = 9
  def f1()
    num = 20
  def f2()
    print num
 
  f2()
  f1()
  f2()
 
  輸出:
  > 9
  > 9
  此題考察全局變量和局部變量。num 不是個全局變量,所以每個函數都得到了自己的 num 拷貝,如果你想修改 num,則必須用 global 關鍵字聲明。比如下面這樣:
 
  num = 9
  def f1()
    global num
  num = 20
  def f2()
    print num
 
  f2()
  f1()
  f2()
 
  此時打?。?/div>
  > 9
  > 20
 
  三、寫一個函數,接受整數參數 n,返回一個函數,函數返回 n 和參數的積。
  代碼實現:
 
  def mulby(num):
    def gn(val):
      return num * val
    return gn
 
  zw = mulby(7)
  print(zw(9))
 
 
  四、請問如何修改以下 Python 代碼,使得下面的代碼調用類 A 的 show 方法?
 
  class A(object)
    def show(self):
      print 'base show'
 
  class B(A):
    def show(self):
      print 'derived show'
 
  obj = B()
  obj.show()
 
  解答:
  這道題考查的是類繼承,只要通過 __class__ 方法指定類對象就可以了。補充的代碼如下:
  obj.__class__ = A
  obj.show()
 
  五、下面這段代碼的輸出是什么?
 
  class B(object):
    def fn(self):
      print 'B fn'
    def __init__(self):
      print "B INIT"
 
  class A(object):
    def fn(self):
      print 'A fn'
 
    def __new__(cls, a):
      print "NEW", a
      if a > 10:
        return super(A, cls).__new__(cls)
      return B()
 
    def __init__(self, a)
      print "INIT", a
 
  a1 = A(5)
  a1.fn()
  a2 = A(20)
 
  解答:
  此題考查的是 new 和 init 的用法,使用 __new__ 方法,可以決定返回那個對象,也就是創建對象之前調用的,這個常見于設計模式的單例工廠模式。 __init__ 是創建對象時調用的。
 
 
  六、如何使用一行代碼交換兩個變量的值?
 
  a = 8
  b = 9
 
  解答:
 
  (a, b) = (b, a)
 
 
  七、下面這段代碼輸出是什么?
 
  ls = [1, 2, 3, 4]
  list1 = [i for i in ls if i > 2]
  print list1
 
  list2 = [i*2 for i in ls if i > 2]
  print list2
 
  dic1 = {x: x**2 for x in (2, 4,6)}
  print dic1
 
  dic2 = {x: 'item' + str(x**2) for x in (2, 4,6)}
  print dic2
 
  set1 = {x for x in 'hello world' if x not in 'low level'}
 
  解答:
  [3, 4]
  [6, 8]
  {2: 4, 4: 16, 6: 36}
  {2: 'item4', 4: 'item16', 6:'item36'}
  set(['h', 'r', 'd'])
 
  此題考查的是列表和字典的生成
 
 
  八、請問如何修改以下Python代碼,使得代碼能夠運行?
 
  class A(object):
    def __init__(self, a, b)
      self.__a = a
      self.__b = b
    def myprint(self):
      print 'a=', self.__a, 'b=', self.__b
 
  a1 = A(10, 20)
  a1.myprint()
 
  a1(80)
 
  此題考查的是方法對象,為了能讓對象實例能被直接調用,需要實現 __call__ 方法,補充代碼如下:
  class A(object)
    def __init__(self, a, b):
      self.__a = a
      self.__b = b
    def myprint(self):
      print 'a=', self.__a, 'b=', self.__b
    def __call__(self, num)
      print 'call:'. num + self.a
 
 
  九、請問下面的代碼有什么隱患?
 
  def strtest1(num):
    str = 'first'
    for i in range(num):
      str += "X"
    return str
 
  由于變量 str 是個不可變對象,每次迭代,Python 都會生成新的 str 對象來存儲新的字符串,num 越大,創建的 str 對象越多,內存消耗越大。
 
 
  十、一個包里有三個模塊,mod1.py , mod2.py , mod3.py ,但使用 from demopack import * 導入模塊時,如何保證只有 mod1 、 mod3 被導入了
 
  在包中增加 __init__.py 文件,并在文件中添加:
  __all__ = ['mod1', 'mod3']
 

主站蜘蛛池模板: 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 耐力板-PC阳光板-PC板-PC耐力板 - 嘉兴赢创实业有限公司 | 立刷【微电签pos机】-嘉联支付立刷运营中心 | 南京泽朗生物科技有限公司-液体饮料代加工_果汁饮料代加工_固体饮料代加工 | 3d可视化建模_三维展示_产品3d互动数字营销_三维动画制作_3D虚拟商城 【商迪3D】三维展示服务商 广东健伦体育发展有限公司-体育工程配套及销售运动器材的体育用品服务商 | 全自动定氮仪-半自动凯氏定氮仪厂家-祎鸿仪器| 万师讲师网-优质讲师培训师供应商,讲师认证,找讲师来万师 | 定量包装机,颗粒定量包装机,粉剂定量包装机,背封颗粒包装机,定量灌装机-上海铸衡电子科技有限公司 | 防渗膜厂家|养殖防渗膜|水产养殖防渗膜-泰安佳路通工程材料有限公司 | 杭州实验室尾气处理_实验台_实验室家具_杭州秋叶实验设备有限公司 | 沥青灌缝机_路面灌缝机_道路灌缝机_沥青灌缝机厂家_济宁萨奥机械有限公司 | 石英陶瓷,石英坩埚,二氧化硅陶瓷-淄博百特高新材料有限公司 | 造价工程师网,考试时间查询,报名入口信息-网站首页 | 医养体检包_公卫随访箱_慢病随访包_家签随访包_随访一体机-济南易享医疗科技有限公司 | 闭端端子|弹簧螺式接线头|防水接线头|插线式接线头|端子台|电源线扣+护线套|印刷电路板型端子台|金笔电子代理商-上海拓胜电气有限公司 | 厌氧工作站-通用型厌氧工作站-上海胜秋科学仪器有限公司 | 压砖机_电动螺旋压力机_粉末成型压力机_郑州华隆机械tel_0371-60121717 | 台式恒温摇床价格_大容量恒温摇床厂家-上海量壹科学仪器有限公司 | 电动葫芦|防爆钢丝绳电动葫芦|手拉葫芦-保定大力起重葫芦有限公司 | 地磅-电子地磅维修-电子吊秤-汽车衡-无人值守系统-公路治超-鹰牌衡器 | 金刚网,金刚网窗纱,不锈钢网,金刚网厂家- 河北萨邦丝网制品有限公司 | 液压油缸-液压站生产厂家-洛阳泰诺液压科技有限公司 | 电主轴,车床电磨头,变频制动电机-博山鸿达特种电机 | 档案密集架_电动密集架_移动密集架_辽宁档案密集架-盛隆柜业厂家现货批发销售价格公道 | 挤出熔体泵_高温熔体泵_熔体出料泵_郑州海科熔体泵有限公司 | 首页 - 张店继勇软件开发工作室| 行星搅拌机,双行星搅拌机,动力混合机,无锡米克斯行星搅拌机生产厂家 | 耐热钢-耐磨钢-山东聚金合金钢铸造有限公司 | 合肥防火门窗/隔断_合肥防火卷帘门厂家_安徽耐火窗_良万消防设备有限公司 | 大巴租车平台承接包车,通勤班车,巴士租赁业务 - 鸿鸣巴士 | 北京三友信电子科技有限公司-ETC高速自动栏杆机|ETC机柜|激光车辆轮廓测量仪|嵌入式车道控制器 | 南京雕塑制作厂家-不锈钢雕塑制作-玻璃钢雕塑制作-先登雕塑厂 | 塑钢件_塑钢门窗配件_塑钢配件厂家-文安县启泰金属制品有限公司 深圳南财多媒体有限公司介绍 | 筒瓦厂家-仿古瓦-寺庙-古建琉璃瓦-宜兴市古典园林建筑陶瓷厂有限公司 | 不锈钢螺丝,不锈钢螺栓,不锈钢标准件-江苏百德特种合金有限公司 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 | 高精度-恒温冷水机-螺杆式冰水机-蒸发冷冷水机-北京蓝海神骏科技有限公司 | 中医中药治疗血小板减少-石家庄血液病肿瘤门诊部 | 兰州牛肉面加盟,兰州牛肉拉面加盟-京穆兰牛肉面 | 复盛空压机配件-空气压缩机-复盛空压机(华北)总代理 | 日本SMC气缸接头-速度控制阀-日本三菱伺服电机-苏州禾力自动化科技有限公司 | 安徽成考网-安徽成人高考网|