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. python unittest框架装饰器

    要说单元测试和UI自动化之间的是什么样的一个关系,说说我个人的一些心得体会吧,我并没有太多的这方面经验,由于工作本身就用的少,还有就是功能测试点点对于我这种比较懒惰的人来说,比单元测试复杂...思考单 ...

  2. android 如何调用 隐藏的 API 接口

    怎样查看并且使用 Android 隐藏 API 和内部 APIhttps://www.jianshu.com/p/fbf45770ecc8 android 隐藏API显式调用以及内部资源使用方法htt ...

  3. asp.net core 创建允许跨域请求的api, cors.

    配置应用方域名. 在webapi中引用cors包,在startup的Configure\ConfigServices中增加启动项配置,在api中增加EnableCors的Attribute属性.即可. ...

  4. 最长k可重区间集问题&&最长k可重线段集问题

    题解: 洛谷上这两题的题意都是有问题的 按照标程题意不应该是开区间而是左开右闭区间 然后连边比较巧妙 我们可以看成选k条不相交的路径,其中i-i+1中有k条边 所以建图i-i+1流量为k,权值为0 l ...

  5. word图片自动编号,前面加章节号

    老实说很多人都没有系统性地学过WORD,毕竟所见即所得,就是学过也比较浅.那么在使用word写作论文时就会感到很烦,因为你想要控制好章节,这样很多的地方就可以按照这种章节自动编号,处理不同节的页眉和页 ...

  6. Visio制图之垮职能流程图

    Visio制图中常用的一种就是带有不同职能,不同阶段的流程关系图. 下面是根据实际生产情况制作的一张“软件生产流程关系图”,供参考.

  7. libssl.so.10: cannot open shared object file: No such file or directory

    今天在使用yum安装东西的时候报错 yum list There was a problem importing one of the Python modulesrequired to run yu ...

  8. Codeforces 922F Divisibility 构造

    Divisibility 我们考虑删数字 首先我们可以发现有一类数很特殊就是大于 n / 2的素数, 因为这些素数的贡献只有1, 并且在n大的时候, 这些素数的个数不是很少, 我们可以最后用这些数去调 ...

  9. 数论算法 剩余系相关 学习笔记 (基础回顾,(ex)CRT,(ex)lucas,(ex)BSGS,原根与指标入门,高次剩余,Miller_Rabin+Pollard_Rho)

    注:转载本文须标明出处. 原文链接https://www.cnblogs.com/zhouzhendong/p/Number-theory.html 数论算法 剩余系相关 学习笔记 (基础回顾,(ex ...

  10. c#代码文件上传和下载

    public JsonResult UploadFile(DriverFileManager filem)        {                       var hfc = Syste ...