360 面試題:
- 請拿出 B 表中的 accd(A 表中和 B 表中的一樣的數據)?
- a = “abbbccc”,用正則匹配爲 abccc,不管有多少 b,就出現一次?
- xpath 使用的什麼庫?
- py2 和 py3 的區別?
- Redis 裏面 list 內容的長度?
- 多線程交互,訪問數據,如果訪問到了就不訪問了,怎麼避免重讀?
- Mysql 怎麼限制 IP 訪問?
- 帶參數的裝飾器?
考查範圍:
- 數據庫 - 內連接查詢,限制ip訪問
- 正則表達式 - re.sub()
- 爬蟲 - lxml,xpath
- python基礎 - python2與python3的區別
- 多任務編程 - 多線程,互斥鎖
- 裝飾器 - 帶參數裝飾器
參考答案
-
請拿出 B 表中的 accd(A 表中和 B 表中的一樣的數據)?
答:select * from B inner join on B.name = A.name
考查:數據庫連接查詢之內連接查詢 -
a = “abbbccc”,用正則匹配爲 abccc,不管有多少 b,就出現一次?
答:思路是不管有多少個 b 替換成一個
re.sub(r’b+’, ‘b’, a)
考查:正則表達式之re.sub -
xpath 使用的什麼庫?
答:lxml
考查:爬蟲lxml -
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。 -
Redis 裏面 list 內容的長度?
答:len key_name
考查:redis中的list -
多線程交互,訪問數據,如果訪問到了就不訪問了,怎麼避免重讀?
答:創建一個已訪問數據列表,用於存儲已經訪問過的數據,並加上互斥鎖,在多線程訪問數據的時候先查看數據是否已經在已訪問的列表中,若已存在就直接跳過。
考查:多線程,互斥鎖 -
Mysql 怎麼限制 IP 訪問?
答:grant all privileges on . to ‘數據庫中用戶名’@’ip 地址’ identified by ‘數據庫密碼’;
(授權某個ip的用戶可以通過密碼訪問數據庫)
考查:數據庫 -
帶參數的裝飾器?
答:帶定長的裝飾器
考查:裝飾器
# 添加輸出日誌的功能
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)