C++八股学习心得.7
1.在 CGI 中使用 Cookies
HTTP 协议是一种无状态的协议。但对于一个商业网站,它需要在不同页面间保持会话信息。例如,一个用户在完成多个页面的步骤之后结束注册。但是,如何在所有网页中保持用户的会话信息。
在许多情况下,使用 cookies 是记忆和跟踪有关用户喜好、购买、佣金以及其他为追求更好的游客体验或网站统计所需信息的最有效的方法。
它是如何工作的
服务器以 cookie 的形式向访客的浏览器发送一些数据。如果浏览器接受了 cookie,则 cookie 会以纯文本记录的形式存储在访客的硬盘上。现在,当访客访问网站上的另一个页面时,会检索 cookie。一旦找到 cookie,服务器就知道存储了什么。
cookie 是一种纯文本的数据记录,带有 5 个可变长度的字段:
- Expires :?cookie 的过期日期。如果此字段留空,cookie 会在访客退出浏览器时过期。
- Domain :?网站的域名。
- Path :?设置 cookie 的目录或网页的路径。如果您想从任意的目录或网页检索 cookie,此字段可以留空。
- Secure :?如果此字段包含单词 "secure",那么 cookie 只能通过安全服务器进行检索。如果此字段留空,则不存在该限制。
- Name=Value :?cookie 以键值对的形式被设置和获取。
文件上传实例
为了上传一个文件,HTML 表单必须把 enctype 属性设置为?multipart/form-data。带有文件类型的 input 标签会创建一个 "Browse" 按钮。
<html>
<body>
???<form enctype="multipart/form-data"
????????????action="/cgi-bin/cpp_uploadfile.cgi"
????????????method="post">
???<p>文件:<input type="file" name="userfile" /></p>
???<p><input type="submit" value="上传" /></p>
???</form>
</body>
</html>
?2.C++ STL
C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。
向量容器(一个 C++ 标准的模板),它与数组十分相似,唯一不同的是,向量在需要扩展大小的时候,会自动处理它自己的存储需求:
- push_back( ) 成员函数在向量的末尾插入值,如果有必要会扩展向量的大小。
- size( ) 函数显示向量的大小。
- begin( ) 函数返回一个指向向量开头的迭代器。
- end( ) 函数返回一个指向向量末尾的迭代器。
3.C++ 标准库?
C++ 标准库可以分为两部分:
- 标准函数库:?这个库是由通用的、独立的、不属于任何类的函数组成的。函数库继承自 C 语言。
- 面向对象类库:?这个库是类及其相关函数的集合。
C++ 标准库包含了所有的 C 标准库,为了支持类型安全,做了一定的添加和修改。
标准函数库
标准函数库分为以下几类:
- 输入/输出 I/O
- 字符串和字符处理
- 数学
- 时间、日期和本地化
- 动态分配
- 其他
- 宽字符函数
面向对象类库
标准的 C++ 面向对象类库定义了大量支持一些常见操作的类,比如输入/输出 I/O、字符串处理、数值处理。面向对象类库包含以下内容:
- 标准的 C++ I/O 类
- String 类
- 数值类
- STL 容器类
- STL 算法
- STL 函数对象
- STL 迭代器
- STL 分配器
- 本地化库
- 异常处理类
- 杂项支持库
4.用简单的语言告诉我C++ 是什么?
C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。C++支持多种编程范式 --面向对象编程、泛型编程和过程化编程。 其编程领域众广,常用于系统开发,引擎开发等应用领域,是最受广大程序员受用的最强大编程语言之一,支持类:类、封装、重载等特性!?
5.C和C++的区别?
c++在c的基础上增添类,C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。?
6.什么是面向对象(OOP)?
面向对象是一种对现实世界理解和抽象的方法、思想,通过将需求要素转化为对象进行问题处理的一种思想。
7.什么是多态
多态是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态。?
8.设计模式懂嘛,简单举个例子
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
比如单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点。
适用于:当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时;当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。
比如工厂模式,定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。
适用于:当一个类不知道它所必须创建的对象的类的时候;当一个类希望由它的子类来指定它所创建的对象的时候;当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
?9.STL库用过吗?常见的STL容器有哪些?算法用过哪几个
STL包括两部分内容:容器和算法。(重要的还有融合这二者的迭代器)
容器,即存放数据的地方。比如array等。
在STL中,容器分为两类:序列式容器和关联式容器。
序列式容器,其中的元素不一定有序,但都可以被排序。如:vector、list、deque、stack、queue、heap、priority_queue、slist;
关联式容器,内部结构基本上是一颗平衡二叉树。所谓关联,指每个元素都有一个键值和一个实值,元素按照一定的规则存放。如:RB-tree、set、map、multiset、multimap、hashtable、hash_set、hash_map、hash_multiset、hash_multimap。
下面各选取一个作为说明。
vector:它是一个动态分配存储空间的容器。区别于c++中的array,array分配的空间是静态的,分配之后不能被改变,而vector会自动重分配(扩展)空间。
set:其内部元素会根据元素的键值自动被排序。区别于map,它的键值就是实值,而map可以同时拥有不同的键值和实值。
算法,如排序,复制……以及个容器特定的算法。这点不用过多介绍,主要看下面迭代器的内容。
迭代器是STL的精髓,我们这样描述它:迭代器提供了一种方法,使它能够按照顺序访问某个容器所含的各个元素,但无需暴露该容器的内部结构。它将容器和算法分开,好让这二者独立设计。
10.数据结构会吗?项目开发过程中主要用到那些
数据结构中主要会用到数组,链表,树(较少),也会用到栈和队列的思想。
总结:
http无状态协议,在不同页面保持会话信息,所以采用cookies,服务器以cookies形式发送数据,浏览器接收,将cookies存放硬盘里,另一个页面会检索cookies,是一个纯文本数据记录
C++STL标准模版库提供通用的模版类和函数,vector动态扩容,push_back函数末尾,size大小,begin开始,end结尾
C++标准库分为标准函数库(不属于任何类的函数)和面向对象类库(类和相关函数的集合)要知道这两个库都有什么
C++是一种面向对象,泛型编程和过程化编程,通常用来系统开发,有三大特性封装,继承,多态三大特性
C++在c基础上加入了类,c是结构化语言,注重算法和数据结构,看中如何通过一个过程来实现输入到输出的过程,c++是创建一个对象,得到对象的状态信息和实现过程控制
面向对象是一种将需求要素转化对象进行问题处理思想
多态相同操作或函数可用于多种类型的对象得到不同的结果
设计模式反复使用,代码设计经验的总结。单例模式一个类有一个实例,提供一个全局访问点,工厂模式,用于创建对象的接口,让子类决定实例化哪一个类。
STL容器(数据存放地方)和算法,容器包括关联式容器(平衡二叉树)都有一个键值和一个实值和序列式容器(不一定有序,但是可以排序)数组,链表,队列,栈,堆,优先级队列,vector可以动态分配,set可以自动排序,迭代器
数据结构中主要会用到数组,链表,树(较少),也会用到栈和队列的思想
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!