python企業真題實戰 - 360 面試題

360 面試題:
  1. 請拿出 B 表中的 accd(A 表中和 B 表中的一樣的數據)?
  2. a = “abbbccc”,用正則匹配爲 abccc,不管有多少 b,就出現一次?
  3. xpath 使用的什麼庫?
  4. py2 和 py3 的區別?
  5. Redis 裏面 list 內容的長度?
  6. 多線程交互,訪問數據,如果訪問到了就不訪問了,怎麼避免重讀?
  7. Mysql 怎麼限制 IP 訪問?
  8. 帶參數的裝飾器?
考查範圍:
  • 數據庫 - 內連接查詢,限制ip訪問
  • 正則表達式 - re.sub()
  • 爬蟲 - lxml,xpath
  • python基礎 - python2與python3的區別
  • 多任務編程 - 多線程,互斥鎖
  • 裝飾器 - 帶參數裝飾器
參考答案
  1. 請拿出 B 表中的 accd(A 表中和 B 表中的一樣的數據)?
    在這裏插入圖片描述
    在這裏插入圖片描述
    答:select * from B inner join on B.name = A.name
    考查:數據庫連接查詢之內連接查詢

  2. a = “abbbccc”,用正則匹配爲 abccc,不管有多少 b,就出現一次?
    答:思路是不管有多少個 b 替換成一個
    re.sub(r’b+’, ‘b’, a)
    考查:正則表達式之re.sub

  3. xpath 使用的什麼庫?
    答:lxml
    考查:爬蟲lxml

  4. py2 和 py3 的區別?
    答:這裏例舉 5 條
    print 在 Python3 中是函數必須加括號,Python2 中 print 爲 class。
    Python2 中使用 xrange,Python3 使用 range。
    Python2 中默認的字符串類型默認是 ASCII,Python3 中默認的字符串類型是 Unicode。
    Python2 中除法的結果是整型,Python3 中是浮點類型。
    Python2 中聲明元類:metaclass = MetaClass,Python3 中聲明元類:class
    newclass(metaclass=MetaClass):pass。

  5. Redis 裏面 list 內容的長度?
    答:len key_name
    考查:redis中的list

  6. 多線程交互,訪問數據,如果訪問到了就不訪問了,怎麼避免重讀?
    答:創建一個已訪問數據列表,用於存儲已經訪問過的數據,並加上互斥鎖,在多線程訪問數據的時候先查看數據是否已經在已訪問的列表中,若已存在就直接跳過。
    考查:多線程,互斥鎖

  7. Mysql 怎麼限制 IP 訪問?
    答:grant all privileges on . to ‘數據庫中用戶名’@’ip 地址’ identified by ‘數據庫密碼’;
    (授權某個ip的用戶可以通過密碼訪問數據庫)
    考查:數據庫

  8. 帶參數的裝飾器?
    答:帶定長的裝飾器
    考查:裝飾器

# 添加輸出日誌的功能
def logging(flag):

    def decorator(fn):
        def inner(num1, num2):
            if flag == "+":
                print("--正在努力加法計算--")
            elif flag == "-":
                print("--正在努力減法計算--")
            result = fn(num1, num2)
            return result
        return inner

    # 返回裝飾器
    return decorator


# 使用裝飾器裝飾函數
@logging("+")
def add(a, b):
    result = a + b
    return result


@logging("-")
def sub(a, b):
    result = a - b
    return result

result = add(1, 2)
print(result)

result = sub(1, 2)
print(result)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章