1.什么是栈溢出,在什么情况下可能会出现
栈溢出是由于C语言系列没有内置检查机制来确保复制到缓冲区的数据不得大于缓冲区的大小,因此当数据足够大时,将会溢出缓冲区的范围。
python函数调用是通过栈这种结构实现的,每当进入一个函数调用,栈都会增加一层栈帧,每当函数返回栈就会减少一层栈帧。由于栈的大小不是无线的,所以递归的调用过多,会导致栈溢出。
2.Cpython的内存管理机制
引用计数:一种非常高效的内存管理手段,当一个对象被引用时其引用计数增加一,当其不再被一个变量引用时则计数减一,当引用计数为0时对象被删除
垃圾回收:python中,所有能够引用其他对象的对象都被称之为容器。因此容器之间才能形成循环引用。python的垃圾回收机制利用了这个特点寻找需要被释放的对象
为了记录下所有的容器对象,python将每一个容器都链到一个双向链表中,之所以使用双向链表是为了方便快速的在容器集合中插入和删除对象。
3.python的魔法方法以及用途
4.已知下列list
list1 = [
{'mm':2},
{'mm':1},
{'mm':4},
{'mm':3},
{'mm':3},
]
4.1把list中的元素按mm值排序
list1.sort(key=lambda x:x['mm'])
print(list1)
4.2获取list1中第一个mm值等于x的元素
s = list(filter(lambda x:x['mm']=='x',list1))[0]
print(s)
4.3list1的输出结果是什么
print(list1[::4])
[
{'mm':1},
{'mm':3},
]
4.4删除list1中所有mm=x的元素,切不对list重新赋值
for i in list(filter(lambda x:x['mm']==3,list1)):
list1.remove(i)
print(list1)
4.5取出list中mm的值最大的元素,不能排序
max_num = max(list(map(lambda x:x['mm'],list1)))
max_dict = list(filter(lambda x:x['mm']==max_num,list1))[0]
print(max_dict)
5.以下操作的时间复杂度
list.index O(1)
dict.get() O(1)
for i in set() O(n)
6.解释以下输出的原因
s1 = '{:0.2f}'.format(0.135)
s2 = '{:0.2f}'.format(0.145)
四舍六入五成双
五前为奇数进位
五前为偶数不进位
7.简述代码抛出以下异常的原因
IndexError 下标索引超出序列边界
AttributeError 这个对象没有这个属性
BaseException 所有异常的类
SystemExit 解释器请求退出
Keyboardlnterrupt 用户中断执行(通常为^C)
Exception 常规错误基类
Stoplteration 迭代器没有更多的值
GeneratorExit 生成器发生异常来通知错误
StandardError 所有内建标准异常的基类
ArithmeticError 所有数值计算错误的基类
FloatingPointError 浮点计算错误
OverflowError 数值运算超过最大限制
ZeroDivisionError 除(或取模)零(所有数据类型)
AssertionError 断言错误
EOFError 没有内建输出,达到EOF标记
EnvironmentError 操作系统错误的基类
IOError 输入/输出错误
OSError 操作系统错误
WindowsError 系统调试错误
LookupError 无效数据查询的基类
KeyError 映射中没有这个键
MemoryError 内存溢出错误
UnboundLocalError 访问未初始化本地变量
ReferenceError 弱引用视图访问已经垃圾回收了的对象
RuntimeError 一般的运行时错误
NotImplementedError 尚未实现的方法
SyntaxError python语法错误
IndentationError 缩进错误
TabError Tab与空格混用
SystemError 一般的解释器系统错误
TypeError 对类型无效操作
ValueError 传入无效操作
8.简述你对GIL的理解
GIL全局解释器锁,python解释器内置的线程锁,保护了线程安全。
但也,使python无法发挥多核的优势,多线程无法实现并行,同一时刻只能一个线程
9.简述以下内置函数的用法
reduce 第一个参数为函数,第二个个参数为可迭代对象。作用是可以对参数序列中的元素进行累加
map 第一个参数为函数,第二个参数为一个或多个可迭代对象。对相同位置的相加
any 判断一个可迭代对象对象有一个不为空,就返回Ture,否则,返回False
all 判断一个可迭代对象所有元素都不为空,就返回Ture,否则,返回False
10.copy与deepcopy的区别是什么
copy:浅拷贝,只拷贝表面一层,深层不会拷贝,如果改变深层,被拷贝的深层也随之改变
deepcopy:深拷贝,无论深层还是浅层被修改,都不会使原被拷贝对象修改
11.进程、线程、协程间的区别和联系
进程:是系统进行资源分配的独立单位,就是说不同的进程拥有不同的堆和栈,既不共享堆,也不共享栈
线程:线程是进程的一个实体,是CPU调度和分配的基本单位,他是比进程更小的能独立运行的基本单位,他又有独立的栈和共享的堆
协程:又称微线程,它和线程一样拥有独立的栈和共享的堆。是由程序员调度执行单元
区别和优缺点:

一个程序至少拥有一个进程,一个进程至少拥有一个线程(主线程)
进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率
协程、线程不能够独立执行,必须依存在进程中,应当使用互斥锁机制来加以控制
进程之间可以通过MQ来传递数据,而线程、协程之间的全局变量是共享的
进程和线程都是由操作系统调度的,而协程的调度是程序员控制的
在IO操作密集型的程序使用协程可以很好的避免CPU的浪费,将CPU的资源主动让出给其他协程使用。操作系统为了程序运行的高效性每个线程都有自己缓存Cache等等数据,操作系统还会帮你做这些数据的恢复操作。 所以线程的切换非常耗性能。但是协程的切换只是单纯的操作CPU的上下文,所以一秒钟切换个上百万次系统都抗的住
12.*ages,**kwargs的含义与用法
接受多个形参传值,接收多个键值对传值
13.http header及其功能
因为http本身是个无状态协议,所以需要在请求头与响应头中存放一些信息,比如协议的类型,使用的编码,cookie发送的内容长度这样服务端就知道浏览器是谁想要做什么

14.cookie与session的区别和联系
cookie存放于浏览器端用于服务器识别浏览器的身份
session在服务器端,它的运行依赖于session ID ,而session ID存放于cookie中,如果浏览器禁用了cookie ,session也会失效

15.什么是浏览器的同源策略
相同IP端口的为同一个域,一个域的脚本仅仅具有本域内的权限,而没有其他域的权限。这种安全限制成为同源策略
为了安全,在进行跨域请求时,浏览器会阻碍数据的接收
16.git commit --amend 有何用处
改写操作,用新的commit替换旧的commit
17.git 如何查看某次提交修改的内容
git log
18.git 比较两个commit的区别
git diff commit-id-1 commit-id-2 > d:/dome.py
+表示2相对于1减少了内容
-表示2相对于1增加了内容
19.git 如何把A分支上的某个commit应用到分支B上
git checkout B
git cherry-pick 上次提交的commit ID
20.如何查看Linux的系统时间,磁盘使用量,内存使用量
查看系统时间
date -s1
磁盘使用量
df -l
内存使用量
top

面试题fugui的更多相关文章

  1. .NET面试题系列[8] - 泛型

    “可变性是以一种类型安全的方式,将一个对象作为另一个对象来使用.“ - Jon Skeet .NET面试题系列目录 .NET面试题系列[1] - .NET框架基础知识(1) .NET面试题系列[2] ...

  2. 关于面试题 Array.indexof() 方法的实现及思考

    这是我在面试大公司时碰到的一个笔试题,当时自己云里雾里的胡写了一番,回头也曾思考过,最终没实现也就不了了之了. 昨天看到有网友说面试中也碰到过这个问题,我就重新思考了这个问题的实现方法. 对于想进大公 ...

  3. 对Thoughtworks的有趣笔试题实践

    记得2014年在网上看到Thoughtworks的一道笔试题,当时觉得挺有意思,但是没动手去写.这几天又在网上看到了,于是我抽了一点时间写了下,我把程序运行的结果跟网上的答案对了一下,应该是对的,但是 ...

  4. 从阿里巴巴笔试题看Java加载顺序

    一.阿里巴巴笔试题: public class T implements Cloneable { public static int k = 0; public static T t1 = new T ...

  5. JAVA面试题

    在这里我将收录我面试过程中遇到的一些好玩的面试题目 第一个面试题:ABC问题,有三个线程,工作的内容分别是打印出"A""B""C",需要做的 ...

  6. C++常考面试题汇总

    c++面试题 一 用简洁的语言描述 c++ 在 c 语言的基础上开发的一种面向对象编程的语言: 应用广泛: 支持多种编程范式,面向对象编程,泛型编程,和过程化编程:广泛应用于系统开发,引擎开发:支持类 ...

  7. .NET面试题系列[4] - C# 基础知识(2)

    2 类型转换 面试出现频率:主要考察装箱和拆箱.对于有笔试题的场合也可能会考一些基本的类型转换是否合法. 重要程度:10/10 CLR最重要的特性之一就是类型安全性.在运行时,CLR总是知道一个对象是 ...

  8. 我们公司的ASP.NET 笔试题,你觉得难度如何

    本套试题共8个题,主要考察C#面向对象基础,SQL和ASP.NET MVC基础知识. 第1-3题会使用到一个枚举类,其定义如下: public enum QuestionType { Text = , ...

  9. 我设计的ASP.NET笔试题,你会多少呢

    本笔试题考查范围包括面向对象基础.HTML.CSS.JS.EF.jQuery.SQL.编码思想.算法等范围. 第1题:接口和抽象类有何区别? 第2题:静态方法和实例方法有何区别? 第3题:什么是多态? ...

随机推荐

  1. Moco使用简单指导

    下载地址 需要java运行环境支持.下载jar包:moco-runner-<version>-standalone.jar 配置文件 下面是参考: 配置 Moco的配置文件格式使用的是js ...

  2. 关于js渲染网页时爬取数据的思路和全过程(附源码)

    于js渲染网页时爬取数据的思路 首先可以先去用requests库访问url来测试一下能不能拿到数据,如果能拿到那么就是一个普通的网页,如果出现403类的错误代码可以在requests.get()方法里 ...

  3. Java生成生成密码类

    import java.util.Date; import java.util.Random; public class PasswordUtil { public final static Stri ...

  4. 小程序报错:request:fail错误(含https解决方案)(真机预览问题)

    问题描述:域名已经备案,我全部都有,也在后台配置了,但是手机预览,还是请求失败, PC端是可以请求数据出来的 新版开发者工具增加了https检查功能:可使用此功能直接本地避开ssl协议版本检查,但是此 ...

  5. python---冒泡和短冒泡排序

    冒泡是最费时的排序,但可以自定义更多步骤. 短冒泡确实可以加快性能. # coding = utf-8 # ========冒泡排序======== def bubble_sort(a_list): ...

  6. RSA javascript加密 lua解密

    一个在线RSA非对称加密解密,可以用这个地址生成公钥和私钥 https://blog.zhengxianjun.com/online-tool/rsa/ javascript加密 jsencrypt. ...

  7. [转] webpack之前端性能优化(史上最全,不断更新中。。。)

    最近在用webpack优化首屏加载性能,通过几种插件之后我们上线前后的速度快了一倍,在此就简单的分享下吧,先上个优化前后首屏渲染的对比图. 可以看到总下载时间从3800ms缩短到1600ms. 我们在 ...

  8. net core体系-API-1Ocelot-(3)简单项目实战

    首先,让我们简单了解下什么是API网关? API网关是一个服务器,是系统的唯一入口.从面向对象设计的角度看,它与外观模式类似.API网关封装了系统内部架构,为每个客户端提供一个定制的API.它可能还具 ...

  9. 解决 js setTimeout 传递带参数的函数无效果

    最近 js  用到 setTimeout 递归调用 刷新进度  setTimeout ("getProgress(name,type)", 3000) ; 发现getProgres ...

  10. 009 pandas的Series

    一:创建 1.通过Numpy数组创建 2.属性查看 3.一维数组创建(与numpy的创建一样) 4.通过字典创建 二:应用Numpy数组运算 1.获取值 numpy的数组运算,在Series中都被保留 ...