c语言中,*(a+1)与*(a+i)有什么区别? 为什么第一个表示的是地址,第二个表示的是元素值。

生活中大部分的计算机,服务器都遵守冯诺依曼体系。

  • 目前所认识的计算机,都是有一个个的硬件组件组成

  • 输入单元:包括键盘, 鼠标,扫描仪, 写板等

  • 中央处理器(CPU):含有运算器和控制器等

  • 输出单元:显示器,打印机等

  1. 这里的存储器指的是内存

  2. 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)

  3. 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。

  4. 所有设备都只能直接和内存打交道。

  • 输入设备:键盘、网卡、磁盘、话筒……

  • CPU:运算器和控制器

  • 输出设备:显示器、网卡、磁盘、音响……

  • 输出设备和输入设备统称为外设

  • 存储器:CPU和所有外设的缓存

  • 冯诺依曼规定了硬件层面上的数据流向

  • 可执行程序运行时必须先加载到内存(冯诺依曼规定)

  • 在数据层面:CPU并不和外设打交道,外设只和内存打交道

  • QQ中传递文件:输入:磁盘、输出:网卡 、输入:网卡、输出:磁盘

  • QQ中聊天:输入:键盘、输出:网卡 、输入:网卡、输出:显示器

  • 任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。

    • 内核(进程管理,内存管理,文件管理,驱动管理)

    • 其他程序(例如函数库,shell程序等等)

    操作系统是进行软硬件资源管理的软件

    • 可以减少用户使用计算机的成本

    • 对下管理好所有的软硬件,对上给用户提供一个稳定高效的运行环境(软件:进程管理、文件管理、驱动管理…… 硬件:磁盘、网卡、显卡、内存……)

    • 在整个计算机软硬件架构中,操作系统的定位是:一款纯正的“搞管理”的软件

    • 硬件部分遵守冯诺依曼体系

    • OS不信任任何用户,任何对系统硬件或者软件访问,都必须通过OS的手

    • 计算机体系是一个层状结构,任何访问硬件或者软件的行为,都必须通过OS接口,贯穿OS进行访问

    • 库函数:语言或者第三方库(第一方:系统的、第二方:自己的,其余是第三方的)给我们提供的接口

    • 系统调用:OS提供的接口

    1. 描述起来,用struct结构体

    2. 组织起来,用链表或其他高效的数据结构

    • 操作系统是进行软硬件资源 管理的软件( 其中管理的本质是先描述在组织(是对数据的管理)

    • 管理分为三种:管理者、执行者、被管理者(eg管理者为OS、执行者为驱动程序、被管理者为底层硬件)

      1. 系统调用把应用程序的请求传输给系统内核执行

      2. 系统调用函数的执行过程应该是由用户态变为内核态(又称系统态)

      3. 利用系统调用能够得到操作系统提供的多种服务

      4. 是操作系统提供给编程人员的接口

      5. 系统调用给用户屏蔽了设备访问的细节

      6. 系统调用保护了一些只能在内核模式执行的操作指令

    • read是系统调用不是库函数

      课本概念:程序的一个执行实例,正在执行的程序等

      内核观点:担当分配系统资源(CPU时间,内存)的实体。

      • task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息

      • 标示符: 描述本进程的唯一标示符,用来区别其他进程。

      • 状态: 任务状态,退出代码,退出信号等。

      • 优先级: 相对于其他进程的优先级。

      • 程序计数器: 程序中即将被执行的下一条指令的地址。

      • 内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针

      • 上下文数据: 进程执行时处理器的寄存器中的数据

      • I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。

      • 记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。

      • 在编程语言中:顺序语句、判断语句、循环语句

      • CPU中有一种寄存器叫pc指针(也称EIP),它是用来记录正在执行指令的下一条指令的地址

    • CPU中运行的代码都是进程的代码

    • 当一个进程在运行中,因为某些原因,需要被暂时停止执行,让出CPU,需要进程保存( 保存的目的是为了恢复)自己的所有的临时数据( 最重要的是进程的上下文数据

    • 在每个CPU中都有一个运行队列,其中运行队列中的进程都是处在运行状态的(CPU是选择性的调度)

      • OS可以一次跑起多个程序,并且OS要管理起来这些运行起来的程序,OS要对进程进行管理

      • OS对进程的管理转化成为了对进程信息的管理,先描述再组织,对进程的管理转化为对双链表的增删查改

      • 进程=你的程序+内核申请的数据结构(PCB)

      • 优先级的本质是在资源(CPU、网卡、显卡、磁盘……)有限的前提下,确立谁先访问资源,谁后访问的问题

      • 进程放在CPU上之后,不是一直在运行直到进程运行结束,每个进程都有一个运行时间单位——时间片

      • 一般进程让出CPU:一种是来了一个优先级更高的进程(OS必须支持抢占);另一种是时间片到了

      • 单CPU,单核:跑起来多个进程,通过进程快速切换的方式,在一段时间内,让所有的进程代码都得到推进——并发

      • 多CPU,多核:任何时刻,允许多个进程同时执行——并行

      • 进程在CPU上运行时,会有很多寄存器上的临时数据——上下文数据

      • 系统感知进程的唯一实体是PBC(进程控制块)

      • 通过系统调用创建进程-fork

        (新群,火热加群中……)

第一部分 Python基础篇(80题)

语言本身简洁,优美,功能超级强大


2、通过什么途径学习的Python?



4、简述解释型和编译型编程语言?

编译型语言:把做好的源程序全部编译成二进制代码的可运行程序。然后,可直接运行这个程序。

解释型语言:把做好的源程序翻译一句,然后执行一句,直至结束!python是一门解释型语言


5、Python解释器种类以及特点?

Cpython(最常用的版本)

Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。

Python实现的Python,将Python的字节码字节码再编译成机器码。


数据存储是以“字节”(Byte)为单位,数据传输是以大多是以“位”(bit,又名“比特”)为单位,位只能容纳两个值(0或1),位是计算机存储的基本单位,是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符;8位 = 1字节,一个8位的字节包含256种可能的0,1组合。



8、请至少列举5个 PEP8 规范(越多越好)。

8、简述触发器、函数、视图、存储过程?

10、索引在什么情况下遵循最左前缀的规则?

11、主键和外键的区别?

13、列举 创建索引但是无法命中索引的8种情况。

14、如何开启慢日志查询?

15、数据库导入导出命令(结构+数据)?

16、数据库优化方案?

18、简述MySQL的执行计划?

19、在对name做了唯一索引前提下,简述以下区别:

20、1000w条数据,使用limit offset 分页时,为什么越往后翻越慢?如何解决?

21、什么是索引合并?

22、什么是覆盖索引?

23、简述数据库读写分离?

24、简述数据库分库分表?(水平、垂直)

26、redis中数据库默认是多少个db 及作用?

28、如果redis中的某个列表中的数据量非常大,如果实现循环显示每一个值?

29、redis如何实现主从复制?以及数据同步机制?

31、如何实现redis集群?

32、redis中默认有多少个哈希槽?

33、简述redis的有哪几种持久化策略及比较?

34、列举redis支持的过期策略。

36、写代码,基于redis的列表实现先进先出、后进先出队列、优先级队列。

37、如何基于redis实现消息队列?

38、如何基于redis实现发布和订阅?以及发布订阅和消息队列的区别?

39、什么是codis及作用?

41、写代码实现redis事务操作。

43、基于redis如何实现商城商品数量计数器?

45、什么是一致性哈希?Python中是否有相应模块?

第四部分 前端、框架和其他(155题)

1、谈谈你对http协议的认识。

2、谈谈你对websocket协议的认识。

4、如何创建响应式布局?

5、你曾经使用过哪些前端框架?

7、如何在前端实现轮训?

8、如何在前端实现长轮训?

10、vue中的路由的拦截器的作用?

12、列举vue的常见指令。

13、简述jsonp及实现原理?

15、列举Http请求中常见的请求方式?

16、列举Http请求中的状态码?

17、列举Http请求中常见的请求头?

26、django请求的生命周期?

27、列举django的内置组件?

28、列举django中间件的5个方法?以及django中间件的应用场景?

31、如何给CBV的程序添加装饰器?

42、django的Form组件中,如果字段中包含choices参数,请使用两种方式实现数据源实时更新。

47、django中如何实现orm表中添加数据时创建一条日志记录。

49、django的缓存能使用redis吗?如果可以的话,如何配置?

53、django中如何实现单元测试?

55、django中如何根据数据库表生成model中的类?

56、使用orm和原生sql的优缺点?


所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层;他们之间以一种插件似的,松耦合的方式连接在一起。

模型负责业务对象与数据库的对象(ORM),视图负责与用户的交互(页面),控制器(C)接受用户的输入调用模型和视图完成用户的请求。

Django的MTV模式本质上与MVC模式没有什么差别,也是各组件之间为了保持松耦合关系,只是定义上有些许不同,Django的MTV分别代表:


60、接口的幂等性是什么意思?

framework框架中都有那些组件?

framework如何实现的用户访问频率控制?

69、Flask框架依赖组件?

71、列举使用过的Flask第三方组件?

72、简述Flask上下文管理流程?

74、Flask中上下文管理主要涉及到了那些相关的类?并描述类主要作用?

75、为什么要Flask把Local对象中的的值stack 维护成一个列表?

76、Flask中多app应用是怎么完成?

84、ORM的实现原理?

86、以下SQLAlchemy的字段是否正确?如果不正确请更正:

87、SQLAchemy中如何为表设置引擎和字符编码?

88、SQLAchemy中如何设置联合唯一索引?

92、Tornado中静态文件是如何处理的?如:

95、简述Tornado框架的适用场景?

96、git常见命令作用:

97、简述以下git中stash命令作用以及相关其他命令。

99、公司如何基于git做的协同开发?

104、如何为github上牛逼的开源项目贡献代码?

106、什么是敏捷开发?

108、公司如何实现代码发布?

110、RabbitMQ如何在消费者获取任务后未处理完前就挂掉时,保证数据不丢失?

112、RabbitMQ如何控制消息被消费的顺序?

114、简述 celery 是什么以及应用场景?

116、celery如何实现定时任务?

117、简述 celery多任务结构目录?

119、简述 requests模块的作用及基本使用?

122、scrapy框架中各组件的工作流程?

123、在scrapy框架中如何设置代理(两种方法)?

124、scrapy框架中如何实现大文件的下载?

126、scrapy中如何实现暂定爬虫?

127、scrapy中如何进行自定制命令?

128、scrapy中如何实现的记录爬虫的深度?

131、简述scrapy中爬虫中间件和下载中间件的作用?

134、scrapy-redis的调度器如何实现任务的深度优先和广度优先?

137、在Python中使用过什么代码检查工具?

140、请列举常见排序并通过代码实现任意三种。

141、请列举常见查找并通过代码实现任意三种。

142、请列举你熟悉的设计模式?

144、列举熟悉的的Linux命令。

145、公司线上服务器是什么系统?

150、什么是反向代理?

151、简述SSH的整个过程。

152、有问题都去那些找解决方案?

153、是否有关注什么技术类的公众号?

154、最近在研究什么新技术?

155、是否了解过领域驱动模型?

我要回帖

更多关于 c语言中int类型的常数 的文章

 

随机推荐