一面(综合能力面) 30min
1.问简历,项目
2.熟悉python吗?知道 (js锁)(不知道是啥,没听说过)吗?python和C++区别
3.数据库索引有哪些
答:唯一索引:在创建唯一索引时要不能给具有相同的索引值。
主键索引:在我们给一个字段设置主键的时候,它就会自动创建主键索引,用来确保每一个值都是唯一的。
聚集索引:我们在表中添加数据的顺序,与我们创建的索引键值相同,而且一个表中只能有一个聚集索引。
普通索引:它的结构主要以B+树和哈希索引为主,主要是对数据表中的数据进行精确查找。
全文索引:它的作用是搜索数据表中的字段是不是包含我们搜索的关键字,就像搜索引擎中的模糊查询。
4.对NLP哪几个方向熟悉
5.代码
写个冒泡排序:
def bubbleSort(arr):
n = len(arr)
# 遍历所有数组元素
for i in range(n):
for j in range(0, n-i-1):
if arr[j] > arr[j+1] :
arr[j], arr[j+1] = arr[j+1], arr[j]
写个快速排序:
def quick_sort(data):
if len(data) >= 2:
mid = data[len(data)//2]
left,right = [], []
data.remove(mid)
for num in data:
if num >= mid:
right.append(num)
else:
left.append(num)
return quick_sort(left) + [mid] + quick_sort(right)
else:
return data
写个二叉树层序遍历:
class TreeNode:
def __init__(self, value):
self.val = value
self.left = None
self.right = None
def print_in_one_line(root):
# ''' 1. 简单版: 打印在一行内,不换行 '''
if not root:
return
queue = []
queue.append(root)
while len(queue) > 0:
node = queue.pop(0)
print(node.val, end = " ") # end属性默认为“\n”,所以print()函数默认会换行。此处设为空格“ ”,防止自动换行
if node.left:
queue.append(node.left) # 将本节点的左子节点入队
if node.right:
queue.append(node.right) # 将本节点的右子节点入队
def print_by_layer_1(root):
'''
2. 逐行打印——初级版:
用line/current_line 控制换行,在入队时候即加入行号信息
'''
if not root:
return
queue = [] #
current_line = 0
queue.append([current_line, root])
while len(queue) > 0:
line, node = queue.pop(0)
# 核心判断:是否换行
if line != current_line:
print() # 不同时换行,print()函数默认end=“\n”
current_line = line
print(node.val, end = " ")
if node.left:
queue.append([line+1, node.left]) # 将本节点的行号和左子节点入队
if node.right:
queue.append([line+1, node.right]) # 将本节点的行号和右子节点入队
def print_by_layer_2(root):
# '''
# 无line/current_line,在入队时候加入换行标记信息,注意边界条件,防止陷入死循环
# '''
if not root:
return
queue = ["r"] # 一开始塞入一个换行标记,作为队首,任何非TreeNode对象都行。
queue.append(root)
while len(queue) > 0:
node = queue.pop(0)
if isinstance(node,TreeNode):
print(node.val, end = " ")
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
else:
# 边界条件
if len(queue) > 0:
queue.append("r") # 对尾添加换行标记
print() # 换行
if __name__ == "__main__":
# 新建节点
node1 = TreeNode(1)
node2 = TreeNode(2)
node3 = TreeNode(3)
node4 = TreeNode(4)
node5 = TreeNode(5)
node6 = TreeNode(6)
node7 = TreeNode(7)
node8 = TreeNode(8)
node9 = TreeNode(9)
node10 = TreeNode(10)
node11 = TreeNode(11)
# 构建二叉树
node1.left, node1.right = node2, node3
node2.left, node2.right = node4, node5
node3.left, node3.right = node6, node7
node4.left, node4.right = node8, node9
node5.left, node5.right = node10, node11
# 指定 node1 为root节点
root = node1
# 打印
print("\nprint in one line:")
print_in_one_line(root)
print("\n\nprint by layer 1:")
print_by_layer_1(root)
print("\n\nprint by layer 2:")
print_by_layer_2(root)
6.反问
我以为就这一面,结果他说他是面综合能力的,问的问题啥都有,有点无语
python基础程序示例:https://www.xnip.cn/python3/python3-examples.html
选择排序:
for i in range(len(A)):
min_idx = i
for j in range(i+1, len(A)):
if A[min_idx] > A[j]:
min_idx = j
A[i], A[min_idx] = A[min_idx], A[i]
三天了,还没回复应该是挂了
#0offer是寒冬太冷还是我太菜##我的实习求职记录#