面试地址:https://www.showmebug.com/pads/CFSENB
上来先自我介绍,问了一下机器学习项目,使用的框架是自己写的还是直接用的?
写SQL语句,优化方法?
进程与线程的区别
对数据库熟悉吗?数据库的存储引擎的区别? 感觉区别说少了,他还想听其他的
浏览器输入URL的过程
三次握手的过程,为什么需要三次?
说一说Linux常用命令
前端用过什么框架?
最后问我最后的职业规划?你想做工程还是算法?
问了一下技术栈。
算法题:中序遍历的递归和非递归的版本
链表的反转,自己再也测试测一下
基础:
C++:
内存分配的方式?
栈和堆的区别
虚函数及其作用?哪些函数不能当虚函数
熟悉什么设计模型,写代码
数据库:索引,以及区别
操作系统:进程间通信机制,cpu调度算法
计算机网络:cookies和session的区别? 一次允许发送多次session吗?
算法一:
//一个有N个整数的一维数组(A[0],A[1],A[2],……,A[n-1]),这个数组中有很多子数组,求子数组之和的最大值是什么?
//1)连续的子数组;
//2)只需得到最大值即可;
//3)整数,可能包含正整数、负整数、零。
//例子:[1,-2,3,5,-3,2]
def MaxSum(A, n):
count = 0
res = float('-inf')
for i in range(n):
count += A[i]
res = max(res, count, A[i])
// if count < 0:
// count = 0
return res
或者:
tmp = max(count+A[i], A[i])
res = max(tnp, res)
算法二:
//给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。
//注意:答案中不可以包含重复的三元组。
//示例:
//给定数组 nums = [-1, 0, 1, 2, -1, -4],
//满足要求的三元组集合为:
//[
// [-1, 0, 1],
// [-1, -1, 2]
//]
class solution:
def helper(nums):
if len(nums) < 3: return []
res = []
N = len(nums)
nums.sort()
for i in range(N):
for j in range(i+1, N):
c = nums[i]
a = nums[j]
b = -a - c
lastb = self.binary_search(nums[i+2:], b)
if b != -1:
res.append([a,b,c])
def binary_search(self, nums, target):
low, high = 0, len(nums-1)
while low < high:
mid = (low+high)//2
if nums[mid] > target:
high = mid -1
else:
low = mid
return nums[low] if nums[low] == target else -1