机器学习面试题
©Ant
1. 服务器常用命令
2.python研发
2.1 python基础题
1.什么是面向切面编程,它的含义?
2.python中运算符//与%的区别?
// 在python中表示整除, 只保留整数部分, eg 3//2=1
% 表示取余, eg 3%2=1
/ 表示真除,eg 3/2=1.5
3. http状态码 404,502,510分别代表什么意思?
404 :请求失败,请求所希望得到的资源未在服务器上发现。
502: 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
510: 获取资源所需要的策略并没有没满足。
响应码分类
1xx 提示信息,表示请求被接收
2xx 响应成功
3xx 响应需要进一步操作,重定向
4xx 客户端错误
5xx 服务器错误
这里主要考察http协议内容,http是超文本传输协议,用来获取网页和传输数据。
http请求: 请求行、请求头、空行、请求体
请求行: 请求类型 请求内容 协议版本
请求类型主要包括: GET POST HEAD PUT DELETE CONNECT TRACE OPTIONS
http响应: 响应行、响应头、空行、响应体
响应行: 版本信息 响应码 附加信息
- 什么是同源策略?实现跨域有那些方法?
> 同源地址: 多个地址中,具备相同协议,相同域名,相同端口的地址称为"同源地址"
> "同源策略":HTTP协议中的一个安全策略,即同源地址之间能够进行进行数据请求,不同源地 址不能够直接的数据请求属于跨域请求协议是不允许的。
> 在HTTP中,只有同源地址才能发送ajax请求,非同源地址是被拒绝的(<script>和<img>除外)
hhtp://localhost:8000/a.html
hhtp://127.0.0.1:8000/a.html
上述两不是同源地址,他们的域名不一样.
跨域请求的实现:
- 方法一:核心思想: 使用<script>标签实现跨域的ajax请求
$(function () {
$("#btnJS").click(function () {
//动态添加script标签,实现跨域请求
var script = document.createElement("script");
script.src = "http://localhost:8000/06-server";
$("body").append(script);
});
});
- 方法二: 跨域资源共享( CORS )机制允许 Web 应用服务器进行跨域访问控制,从而使跨域数据传输得以安全进行
5 is 和 ==的区别?
```python
# is比较的是两者(数据对象)的内存地址,id()可获取变量内存地址
# ==比较的是两者的值。
# 但小数据池数据例外,小数据池数据is和==的效果一样,小数据池指数值介于 -5~256 之间的值
#测试数值
a=256
b=256
print(a==b) #true
print(a is b) #true
a=257
b=257
print(a==b) #true
print(a is b) #false
6 "for else"语句的逻辑?
如果for循环遍历成功则执行else,中途退出就不执行else部分。
可以用来判断for循环中数据是否完全遍历。但由于容易造成混淆使用时需要多加注意。
for i in range(5):
print(i)
else:
print("遍历完所有数据")
for i in range(5):
print(i)
if i == 3:
break
else:
print("未遍历完所有数据")
7 闭包函数的使用?
闭包函数三要素:嵌套结构,内部函数使用外部变量。外部函数使用内部返回值.
def x(a):
b=2
def y(c):
d=3
return a+b+c+d
return y
8 写出下面代码执行结果
import copy
l1 = [1,2,['a','b']]
l2 = l1
l3 = copy.copy(l2)
l4 = copy.deepcopy(l3)
l1.append(3)
l2.append('c')
print(l2) # [1,2,['a','b'],3,c]
print(l3) # [1,2,['a','b']]
print(l4) # [1,2,['a','b']]
"""
这里考察浅拷贝(=)、深拷贝(deepcopt)和copy()函数的使用。
= 是一种浅拷贝,只拷贝了变量的指针,即两个变量名指向同一个数据,修改源值,拷贝值也会修改
deepcopy 为深拷贝,即在内存中又复制了一份同样的数据。
copy()函数只拷贝一层结构,eg: 修改l1中内部列表值时,l1[2][0] ='c', l3会变为[1,2,['c','b']]
"""
9 请使用一行代码实现与下面代码完全相同的逻辑和输出
if a+b<x:
print(a+b)
else:
print(sum([a+b+x]))
print(a+b) if a+b<x else print(sum([a+b+x]))
"""
考察点:三目运算,
print('true') if 条件 else print('false')
"""
10 下面的函数实现了那种数学运算?
n的阶乘
def calc(n):
if n==0:
return 1
else:
return n*calc(n-1)
"""
考察点:递归函数,
"""
11 下列代码运行结果?
1,2
def x(max):
n,a=1,1;
while n < max:
yield a
a += n
n += 1
for n in x(3):
print(n)
"""
考察点:生成器的使用
"""
12 下面两种永久运行程序,那种好些?
第一种好,递归调用次数过多会导致内存中栈溢出。
from time import sleep
def x():
while True:
print('滴答')
sleep(1)
def x():
print('滴答')
sleep(1)
x()
"""
考察点:递归函数的缺点,函数在内存中的执行方式。
"""
13 请使用[两行python代码]实现计算指定文件中字符’a’出现的次数,注意文件可能非常巨大
服务器内存可能非常小
14 写出输出结果
1,(2,3),{}
def f(x,*y,**z):
print(x,y,z)
f(1,2,3)
"""
考察点:函数传参
"""
15 输出执行结果
output: 3
def call(func,timeout=5,**kwargs):
print(kwargs.get('x',0))
print(kwargs.get('y',0))
return func(kwargs.get('x',0),kwargs.get('y',0))
def my_func(x,y):
return x+y
call(my_func,x=1,y=2)
"""
考察点:kwargs.get('x',0)
"""
16 异常知识点考察
def f():
x= []
try:
x[:] = "hello"
x.append('try')
return x
x.append("return1")
except:
pass
else:
pass
finally:
x.append('finally')
return x
x.append('retunrn4')
f()
17(???) 请问print(’‘is None and not {} or [{}] and {’’} or not ‘’)的结果?
output: True
考察点:python中的'零'(空)值,和逻辑运算符的使用
18输出结果?
output:
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6]
[1, 2, 3, [4, 5, 6]]
l1,l2= [1,2,3],[4,5,6]
print(l1+l2)
l1,l2= [1,2,3],[4,5,6]
l1.extend(l2)
print(l1)
l1,l2= [1,2,3],[4,5,6]
l1.append(l2)
print(l1)
"""
考察点:列表合并
"""
19 字典变量dic中可能含有键’x’,请用一行代码打印出键的值
def f(dict):
# 方法1
for key in dict:
if key == 'x':
print(dict[key])
#方法2
print(next((dict[key] for key in dict if key=='x')))
f({'x':1,"y":2})
"""
考察点:三目,生成器的使用
"""
20 命令行断点调试python代码
参考博客
python官网pdb断点调试
常用的调试命令(具体详细的资料参见官网文档):
断点相关命令:
设置断点: (Pdb) b 8 #断点设置该文件的第8行(b即break的首字母)
显示所有断点:(Pdb) b #b命令,没有参数,显示所有断点
删除断点:(Pdb) cl 2 #删除第2个断点 (clear的首字母)
Step Over:(Pdb) n #单步执行,next的首字母
Step Into:(Pdb) s #step的首字母
Setp Return:(Pdb) r #return的首字母
Resume:(Pdb) c #continue的首字母
Run to Line:(Pdb) j 10 #运行到地10行,jump的首字母
(Pdb) p param #查看当前param变量值
(Pdb) l #查看运行到某处代码
(Pdb) a #查看全部栈内变量
(Pdb) h #帮助,help的首字母
(Pdb) q #退出,quit的首字母
2.2 python问题分析题
1