网编并发

Python面试重点(进阶篇)

注意:只有必答题部分计算分值,补充题不计算分值。

第一部分 必答题

  1. 简述 OSI 7层模型及其作用?(2分)

    物理层:定义物理设备的标准,主要对物理连接方式。

    数据链路层:主要对物理层传输的比特六包装,检测保证数据传输的可靠性将物理层接受的数据进行max地址的封装和解封装。

    网络层:控制子网的运行。路由的最小单位——分组(包)

    传输层:定义一些传输数据的协议和端口

    会话层:负责在网络中的两个节点建立,维持和终止信息。解决节点连接的协调和管理问题。

    表示层:管理数据的解密和解密。

    应用层:文件传输,文件管理。电子邮件的信息处理。

  2. 简述 TCP三次握手、四次回收的流程。(3分)

    三次握手:第一次是将SYN置为1,随机产生一个值,将数据包发送出去。第二次握手,收到SYN值唯一,确认收到数据,并产生一个随机值,再把数据发回去。第三次握手,收到信息是否不为发送时的值,进行判断连接建立成功。

    四次回收:第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

  3. TCP和UDP的区别?(3分)

    tcp是面型连接的,可靠的数据传输。udp是不可靠的报文传输。

  4. 什么是黏包?(2分)

    ①犹豫你设置的接受大小下雨你收到的消息的大小,那么剩余的消息的部分会和下一次接受一次被接收到。②快速连续发送两个很小的消息,两个消息会被合在一起被一次接收拿到。

  5. 什么 B/S 和 C/S 架构?(2分)

    b/s是浏览器/服务器模式。c/s是服务端/服务器模式。

  6. 请实现一个简单的socket编程(客户端和服务端可以进行收发消息)(3分)
  7. 简述进程、线程、协程的区别?(3分)

    进程/线程是在计算机中真是存在的,协程是程序员创造出来的。进程是计算机资源分配的最小单位。线程是计算机中可以被cpu调度的最小单位。一个线程可以有多个协程。一个进程中可以有多个线程,一个进程中的线程可以共享进程中的资源,一个进程中至少有个一个线程。

  8. 什么是GIL锁?(2分)

    全局解释锁,每次只能一个线程获得cpu的使用权:为了线程安全,也就是为了解决多线程之间的数据完整性和状态同步而加的锁,因为我们知道线程之间的数据是共享的。

  9. 进程之间如何进行通信?(2分)
  10. Python如何使用线程池、进程池?(2分)

    使用shutdown

  11. 请通过yield关键字实现一个协程? (2分)
  12. 什么是异步非阻塞? (2分)

    就是这边可以接受,另一半可以继续工作

  13. 什么是死锁?如何避免?(2分)

    两个以上的线程处于等待,无法执行。避免:加锁进行顺序进入

  14. 程序从flag a执行到falg b的时间大致是多少秒?(2分)

    60.5

    import threadingimport timedef _wait():    time.sleep(60)# flag at = threading.Thread(target=_wait)t.setDeamon(False)t.start()# flag b
  15. 程序从flag a执行到falg b的时间大致是多少秒?(2分)

    60

    import threadingimport timedef _wait():    time.sleep(60)# flag at = threading.Thread(target=_wait)t.setDeamon(True)t.start()# flag b
  16. 程序从flag a执行到falg b的时间大致是多少秒?(2分)

    61

    import threadingimport timedef _wait():    time.sleep(60)# flag at = threading.Thread(target=_wait)t.start()t.join()# flag b
  17. 读程序,请确认执行到最后number是否一定为0(2分)

    import threadingloop = int(1E7)def _add(loop:int = 1):    global number    for _ in range(loop):        number += 1def _sub(loop:int = 1):    global number    for _ in range(loop):        number -= 1number = 0ta = threading.Thread(target=_add,args=(loop,))ts = threading.Thread(target=_sub,args=(loop,))ta.start()ta.join()ts.start()ts.join()
  18. 读程序,请确认执行到最后number是否一定为0(2分)

    import threadingloop = int(1E7)def _add(loop:int = 1):    global number    for _ in range(loop):        number += 1def _sub(loop:int = 1):    global number    for _ in range(loop):        number -= 1number = 0ta = threading.Thread(target=_add,args=(loop,))ts = threading.Thread(target=_sub,args=(loop,))ta.start()ts.start()ta.join()ts.join()
  19. MySQL常见数据库引擎及区别?(3分)
  20. 简述事务及其特性? (3分)

    在计算机是指方粉并可能更新数据库中的各种数据项的一个程序执行单位。属性:原子性、一致性、隔离性、持久性

  21. 事务的隔离级别?(2分)

    读未提交、不可重复读、可重复读、串行化

  22. char和varchar的区别?(2分)

    char的长度是固定的。varchar长度是可变的。char比varchar的效率稍高。

  23. mysql中varchar与char的区别以及varchar(50)中的50代表的含义。(2分)

    char的长度是固定的。varchar长度是可变的。char比varchar的效率稍高。50代表最多存放50个字符。

  24. MySQL中delete和truncate的区别?(2分)

    delete删除条件符合的数据。truncate删除所有数据。

  25. where子句中有a,b,c三个查询条件, 创建一个组合索引abc(a,b,c),以下哪种会命中索引(3分)
    (a)(b)(c)(a,b)(b,c)(a,c)(a,b,c)
  26. 组合索引遵循什么原则才能命中索引?(2分)
  27. 列举MySQL常见的函数? (3分)

    length,concat,insert

  28. MySQL数据库 导入、导出命令有哪些? (2分)

    mysqldump -h localhosot -uroot -ppassword

    mysql -h localhost -uroot -ppassword

  29. 什么是SQL注入?(2分)

    SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作

  30. 简述left join和inner join的区别?(2分)

    left join:以左表为准。

    inner join:选两张表都有的。

  31. SQL语句中having的作用?(2分)

    对由sum或其它集合函数运算结果的输出进行限制。比如,我们可能只希望看到Store_Information数据表中销售总额超过1500美圆的商店的信息,这时我们就需要使用HAVING从句。

  32. MySQL数据库中varchar和text最多能存储多少个字符?(2分)

    varchar:100个字符。text:没有上限。

  33. MySQL的索引方式有几种?(3分)

    普通索引,唯一索引,全文索引。

  34. 什么时候索引会失效?(有索引但无法命中索引)(3分)

    存在null值条件。not条件。like通配符

  35. 数据库优化方案?(3分)

    数据分区。索引。缓存机制。

  36. 什么是MySQL慢日志?(2分)

    开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。

  37. 设计表,关系如下: 教师, 班级, 学生, 科室。(4分)
    科室与教师为一对多关系, 教师与班级为多对多关系, 班级与学生为一对多关系, 科室中需体现层级关系。
    1.  写出各张表的逻辑字段2.  根据上述关系表    a.查询教师id=1的学生数    b.查询科室id=3的下级部门数    c.查询所带学生最多的教师的id
  38. 有staff表,字段为主键Sid,姓名Sname,性别Sex(值为"男"或"女"),课程表Course,字段为主键Cid,课程名称Cname,关系表SC_Relation,字段为Student表主键Sid和Course表主键Cid,组成联合主键,请用SQL查询语句写出查询所有选"计算机"课程的男士的姓名。(3分)
  39. 根据表关系写SQL语句(10分)
    • 查询所有同学的学号、姓名、选课数、总成绩;
    • 查询姓“李”的老师的个数;
    • 查询平均成绩大于60分的同学的学号和平均成绩;
    • 查询有课程成绩小于60分的同学的学号、姓名
    • 删除学习“叶平”老师课的score表记录;
    • 查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分;
    • 查询每门课程被选修的学生数;
    • 查询出只选修了一门课程的全部学生的学号和姓名;
    • 查询选修“杨艳”老师所授课程的学生中,成绩最高的学生姓名及其成绩;
    • 查询两门以上不及格课程的同学的学号及其平均成绩;

第二部分 补充题

  1. 什么是IO多路复用?
  2. async/await关键字的作用?
  3. MySQL的执行计划的作用?
  4. 简述MySQL触发器、函数、视图、存储过程?
  5. 数据库中有表:t_tade_date
    id      tade_date1       2018-1-22       2018-1-263       2018-2-84       2018-5-6...输出每个月最后一天的ID

原文地址:https://www.cnblogs.com/jianzhicangqiong/p/12371151.html

时间: 2024-11-09 05:07:09

网编并发的相关文章

python面试题 -- 网编并发

Python面试重点(进阶篇) 注意:只有必答题部分计算分值,补充题不计算分值. 第一部分 必答题 简述 OSI 7层模型及其作用?(2分) # 应用层:文件传输,文件管理,电子邮件的信息处理# 表示层:确保一个系统的应用层发送的消息可以被另一个系统的应用层读取,编码转换,数据解析,管理数据的解密和加密# 会话层:验证访问和会话管理# 传输层:为应用程序之间提供端对端的逻辑通信.# 网络层:选择合适的网间路由完成两个计算机之间的多个数据链路,通过路由协议和地址解析协议(ARP).IP,RIP(路

python网编并发数据库

第一部分 必答题 简述 OSI 7层模型及其作用?(2分) 应用层:与用户直接交互,软件.网站等 表示层:使用软件.网站可以查看的数据,图片等 会话层:保持登录状态,电脑中为cookie 传输层:选择TCP/UDP协议,进行数据发送. 网络层:通过IP路径寻址,并且对数据进行封装 数据链路层:使用mac地址寻址,又进行了数据封装 物理层:将上面得到的数据转化为信号 简述 TCP三次握手.四次回收的流程.(3分) 三次握手: 第一次握手:Client将标志设置为SYN=1,随机产生一个seq=J,

python链家网高并发异步爬虫and异步存入数据

python链家网二手房异步IO爬虫,使用asyncio.aiohttp和aiomysql 很多小伙伴初学python时都会学习到爬虫,刚入门时会使用requests.urllib这些同步的库进行单线程爬虫,速度是比较慢的,后学会用scrapy框架进行爬虫,速度很快,原因是scrapy是基于twisted多线程异步IO框架. 本例使用的asyncio也是一个异步IO框架,在python3.5以后加入了协程的关键字async,能够将协程和生成器区分开来,更加方便使用协程. 经过测试,平均1秒可以爬

Windows下利用Python动态检测外网IP并发邮件给邮箱

我们知道,运营商给分配的都是动态IP,IP地址过一段时间会自己变化,这就给需要静态地址的应用带来不便,例如搭建服务器或者远程控制电脑,这种情况必须知道自己电脑的IP,利用Python可以方便的自动检测并向邮箱发送邮箱. 但是,个人网络一般都是通过路由器来上网,直接检测电脑的IP并不可行,需要得到外网的IP.内网电脑可以通过端口映射来映射到外网.检测的原理如下: 1.通过自己的电脑信息不太好获取外网IP,幸好有一些雷锋网站可以帮助我们来检测,例如 http://city.ip138.com/ip2

python获取外网IP并发邮件

第一步:通过ip138来爬取外网ip 第二部:通过python的smtplib模块和email来发送邮件,具体用法去网上搜索,下面是代码示例: #!/usr/bin/env python #coding:utf-8 import urllib2 import re import smtplib from email.MIMEText import MIMEText from email.Header import Header ##################################

网编试题

深圳骑士计划脱产班全栈3期第三次统一考试 考试时长:5个小时                   满分:150分 评分标准(150分):  (150, 'A+'), (136, 'A'), (129, 'B+'), (121, 'B'), (106, 'B-'), (91, 'C+'), (76, 'C'), (61, 'C-'), (0, ' D') 1.请编写一个函数实现将IP地址转换成一个整数.(5分) 如 10.3.9.12 转换规则为: 10            00001010 3

网编提高 进程阶段

目录 进程的基础 2.操作系统 操作系统的发展史 多道技术 第二代 1955~1965 磁带存储--批处理系统 第三代集成电路,多道程序系统(1955~1965) 进程的理论(重点) 进程的创建(进程之间不允许通信)? 进程的状态 进程的基础 ? 1.程序 ? 一堆静态的代码文件 ? 2.进程 ? 一个正在运行的程序 ? 由操作系统操控调用交由cpu运行 ,被cpu运行 2.操作系统 ? 1.管理控制协调计算机中硬件与软件的关系 ? 2.操作系统的作用? ? 2.没有操作系统:你们在开发软件 ?

二、网编之初识Socket套接字结构体

二.初识Socket套接字结构体 1.通用套接字结构体类型 struct sockaddr { sa_family_t sa_family; //协议簇 char sa_data[14]; //协议簇数据 } 通用套接字结构体可以在不同的协议簇之间进行强制转化,Socket网络编程中几乎所有套接字API函数的形参都是通用套接字结构体struct sockaddr. 存在问题: 通用套接字结构体对编程的角度来说,设置很不方便,我们以以太网协议来说,当要设置端口号.IP地址等,那么我需要将端口号与I

Python网编_进程之间的数据隔离

写在前面: 控制台的本质是一个文件 文件操作的时候尽量不要用r+ w+ a+ 如果用要小心文件指针混乱 随着进程数量的增多会有一些隐患 from multiprocessing import Process n = 100 # 定义一个全局变量 def func(): global n # 通过global改变n的值 n -= 1 if __name__ == '__main__': lis = [] for i in range(2): # 开启两个进程 p = Process(target=