面試第四篇

 1.文件操做有哪些模式?請簡述各模式的做用python

    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

mysql oracle sqlserver

10.有表list,共有字段ABC類型都是整數,表中有以下記錄:  sql

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; 
相關文章
相關標籤/搜索