• 面试技术点分析(一)


    参考链接:https://blog.csdn.net/luo981695830/article/details/82667412?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

    1.数据类型有几种、有什么区别

    列表  list
    元组  tuple
    字符串  string
    数字   int,float,complex
    布尔类型  True,False
    字典  dict
    集合 set

    2.进程、线程、协程定义及区别

    进程是操作系统进行资源分配和调度的基本单位,多个进程之间相互独立。
    线程是CPU进行资源分配和调度的基本单位,它是比进程更小的能独立运行的基本单位
    协程的调度完全由用户控制

    区别

    线程与进程的比较
    1.线程是进程的一个执行单元,进程内至少有一个线程,在一个进程中线程是共享进程的资源,进程与进程之间相互不影响。
    2.线程是CPU调度的基本单位,但进程不是
    3.二者均可并发执行
    4.线程不能独立执行,必须依存在应用程序中(进程)
    
    协程与线程的比较
    1.一个线程可以有多个协程,一个进程也可以单独拥有多个协程
    2.线程与进程都是同步机制,而协程是异步
    3.协程能保留上一次调用的状态

    总结

    在IO密集型一般使用多线程,CPU密集型使用多进程,强调非阻塞异步并发的一般都是使用协程

    3.深浅拷贝的区别

    浅拷贝是对原元素的引用,如果修改了原元素中的可变数据类型,拷贝之后的数据也会跟着改

    深拷贝是原元素的数据拷贝,放入新开辟的内存地址,修改原元素对深拷贝之后的数据不会产生影响

    4.常用设计模式

    https://blog.csdn.net/wmj150731/article/details/81589659

    5.函数式编程,对象式编程

    函数式编程是从头写到尾,中间修改后面也要改(类似流水线生产,从头到尾)

    对象式编程相当于组装多个功能,形成一个大功能(类似于把每个流水线生产好的部件在这里组装起来)

    6.闭包、装饰器

    闭包函数:定义在内部的函数引用外部函数的名字叫做闭包函数

    7.名称空间的查找顺序

    查找顺序:局部>>全局>>内置

    函数在定义阶段就已经固定查找名字的顺序,不会因为函数的调用的位置改变而改变

    8.python中的类可以多继承么,多继承的继承方式

    可以,写多个父类就行

    9.魔法方法,举例并说明

    __init__   初始化函数,在创建实例对象为其赋值时使用
    __new__   在__init__之前执行,真正的构造函数,并返回一个实例对象,当做参数self给__init__使用
    __call__    当调用一个对象的时候,就会触发类中的__call__方法

    创建对象步骤

    1.首先调用__new__得到一个对象
    2.__init__为这个对象添加属性
    3.将对象赋值给变量

    10.生成器、迭代器、可迭代对象的定义及区别

    可迭代对象:内置有__iter__方法的对象就是可迭代对象
    迭代器:可迭代对象执行__iter__方法得到的结果就是迭代器,迭代器既有__iter__方法又有__next__方法
    生成器:用户自定义的迭代器,内部加了关键字yield,yield后面的值必须调用__next__方法才能获得
    重点:
    迭代器一定是可迭代对象,可迭代对象不一定是迭代器
    for循环的本质:将in后面的可迭代对象调用__iter__变成迭代器,调用__next__迭代取值

    11.垃圾回收机制

    引用计数:当内存中的数据没有任何变量名与其有绑定关系,就会被自动回收
    标记清除:当内存快要被某个应用程序占满的时候,会自动触发清除
    分代回收:根据存活的时间,划分不同的等级,等级越高的垃圾回收机制扫描的频率越低

    12.线程安全、死锁、GIL

    线程安全:如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。存在竞争的线程不安全,不存在竞争的线程就是安全的
    死锁:死锁是指两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
    GIL:全局解释器锁,不是python的特性,是cpython中的一个概念。在一个进程中所有线程的资源是共享的,为了保证线程的数据完整性,所以使用了GIL,每次只执行一个线程。

    13.解决线程不安全的办法

    抢票用多线程实现,可能出现多个用户买同一张票的情况

    设置锁Lock,在处理数据之前抢到锁,处理完数据之后释放锁。

    14.linux常用命令,举例说明

    mv  移动文件     
    mv   源文件目录   目标文件目录 
    mv test3 test2       把test2文件移动到test3下
    
    grep指令和管道符|使用
    查看redis的进程号    ps -ef | grep redis
    杀死进程     kill  进程号
    
    
    cp拷贝指令
    cp   原路径   目标路径

    16.http状态码

    http协议四大特性

    1.基于请求和响应
    2.基于TCP/IP之上作用于应用层的协议
    3.无状态(服务端无法保存用户的状态)
    4.无链接(请求来一次就响应一次,之后立马断开连接)

    请求数据格式

    请求首行(标识HTTP协议版本,当前的请求方式)
    请求头(一大堆k,v键值对)
    /r/n
    请求体(一些敏感信息)

    五种响应状态码

    1XX:服务端已经成功接收了你的数据正在处理,你可以继续提交额外的数据
    2xx:服务端成功响应你想要的数据(请求成功200)
    3xx:重定向(当你在访问一个需要登录之后才能访问的页面,你会发现窗口会自动调到登录页面) 301 302
    4xx:请求错误(请求资源不存在报404,请求不合法不符合内部规定权限不够报403)
    5xx:服务器内部错误(500)

    17.http和https的区别

    1.http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
    2.http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
    3.http的连接很简单,是无状态的。Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

    18.网络编程、通信协议

    19.三次握手、四次挥手

    20.http中get 和 post的区别

    21.缓存怎么做

    就是把需要经常使用的数据提前放在某个地方,可以是本机的内存,也可以放在其他地方,这样做可以减少系统开销,提高系统效率。

    22.session、cookie的区别

    Session是保存在服务端,用来跟踪用户的状态
    Cookie是保存在客户端的,用cookie来实现session跟踪的,第一次创建session的时候,服务端会告诉客户端,在cookie里面记录一个session ID,以后每次请求把这个ID发送到服务端就知道是哪个用户了。

    23.socket/TCP /UDP/HTTP

    1.osi七层协议:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层
    2.IP 协议对应于网络层,TCP协议对应于传输层,HTTP协议对应于应用层,三者从本质上来说没有可比性,socket则是对TCP/IP协议的封装和应用
    3.TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据
    4.socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API), 通过Socket,我们才能使用TCP/IP协议。
    5.TCP之所以可靠是因为有反馈机制,TCP的三次握手举例,TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性
    6.UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,正由于这些特点,使得UDP的开销更小数据传输速率更高
  • 相关阅读:
    数据库学习笔记3--基本的SQL语句
    数据库学习笔记2--MySQL数据类型
    数据库学习笔记1----MySQL 5.6.21的安装和配置(setup版)
    JavaWeb学习笔记1---http协议
    Spring学习笔记18--通过工厂方法配置Bean
    Spring学习笔记17--在XML中使用SPEL
    Spring 学习笔记16---properties文件的两种方式
    Spring学习笔记15--注解Bean
    Spring4.0学习笔记1---开发环境搭建
    Installed JREs时 Standard 1.1.x VM与Standard VM的区别
  • 原文地址:https://www.cnblogs.com/wangcuican/p/12595453.html
Copyright © 2020-2023  润新知