面试第四篇

 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; 
原文地址:https://www.cnblogs.com/moning/p/8451501.html