zoukankan      html  css  js  c++  java
  • 面试第四篇

     1.文件操作有哪些模式?请简述各模式的作用

        r   只读模式     r+   读写  rb
        w   只写模式     w+   写读  wb
        x   只写模式     x+   写读  xb
        a   追加模式     a+   写读  ab
    

    2.s = '**hello,world!**'请使用strip方法去掉字符串两端的'*'号

    s = '**hello,world!**'
    print(s.strip("*"))
    

    3.用户输入一个任意数字n,求1-n之间所有数字中的奇数

    def foo(num):
        for i in range(1,num+1):
            if i %2 != 0:
                print(i)
    
    if __name__ == '__main__':
        input_num = int(input(">>:").strip())
        foo(input_num)
    
    --------------------------------------------
    
    input_num = int(input(">>:").strip())
    
    print(list(range(1,input_num,2)))
    

    4.s = 'hskakhlkshfkskjakf',请去除s字符串中重复的字母

    s = 'hskakhlkshfkskjakf'
    s_bak = ""
    for i in s:
        if s.count(i) == 1 :
            s_bak += i
        else:
            pass
    s = s_bak
    print(s)
    

    5.思考题:

      有一个类的init方法如下:
      class Person:
        def __init__(self,name,age,sex,weight):
          self.name = name
          self.sex = sex
          self.age = age
          self.weight = weight
      假设有100个person的对象,
      若两个对象的obj1,obj2的name和sex属性相同
      即obj1.name==obj2.name and obj1.sex==obj2.sex
      我们认为两个对象为同一个对象,已知一个列表中的100个对象,对这100个对象进行去重。
      提示:
      重写Person类重的两个内置方法

    class Person:
        def __init__(self,name,age,sex,weight):
            self.name = name
            self.sex = sex
            self.age = age
            self.weight = weight
    
        def __eq__(self,obj):
            if self.name == obj.name and self.sex == obj.sex:
                return True
    
        def __hash__(self):
            return (self.name,self.sex).__hash__()
    
    a1 = Person("alex",18,"male",60)
    a2 = Person("alex",30,"male",60)
    print(set([a1,a2]))
    

    6.线程,进程,协程的区别?

    进程是一个资源单位
    线程是一个执行单位
    协程在一个线程下工作,由用户自己控制,可以实现并发功能
    

    7. GIL是什么,对于python有什么影响?

    是一个解释器锁
    同一时刻一个cpu只能运行一个线程,提高了内存安全
    

    8.基于对列实现一个生产者消费者模型,要求:队列内元素不能超过5个,一旦有五个元素了,生产者不再生产,其他内容自由扩散

    import queue,threading,time
    
    q = queue.Queue(maxsize = 5)
    
    def producer():
        num = 1
        while True:
            if not q.full():
                q.put(num)
                print("put",num)
                num = num +1
    
    def consumer():
        while True:
            if not q.empty():
                print("get",q.get())
    
    p1 = threading.Thread(target=producer)
    c1 = threading.Thread(target=consumer)
    
    p1.start()
    c1.start()
    

    9.试列出至少三种目前流行的大型关系数据库的名称

    mysql oracle sqlserver
    

    10.有表list,共有字段ABC类型都是整数,表中有如下记录:  

    A    B     C
    2    7     9
    5    6     4
    3    11    9  
    现在对该表依次完成以下操作:

    (1) 查询出B、C列的值,要求按B列升序排序:

    select B,C from list order by B asc; 

    (2) 写一条新的纪录,值为 7 8 9

    inset into list(A,B,C) values(7,8,9); 

    (3) 查询C列,要求清除重复的值,按降序排列:

    select C from test group by C desc; 
  • 相关阅读:
    Effective C++笔记:继承与面向对象设计
    华为手机连不上adb解决方法
    android手机出现sqlite3 not found的解决方法
    adb permission denied
    Apache2.4为什么启动报错Cannot load php5apache2_4.dll into server
    界面排版-TableLayout的stretchColumns方法
    java中静态代码块的用法 static用法详解(转)
    Activity not started, its current task has been brought to the front
    (转)在低版本的SDK里使用高版本函数@SuppressLint("NewApi") or @TargetApi?
    Android笔记:解决 Your project contains error(s),please fix them before running your application问题
  • 原文地址:https://www.cnblogs.com/moning/p/8451501.html
Copyright © 2011-2022 走看看