(三)编程基础知识

1. MySQL 与Redis 的区别?

  正确回答通过率:92.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 初级

MySQL 与Redis 类型上:
mysql是关系型数据库,redis是缓存数据库(No-SQL数据库)

MySQL 与Redis 作用上:
mysql用于持久化的存储数据到硬盘,功能强大,速度较慢,基于磁盘,读写速度没有Redis快,但是不受空间容量限制,性价比高。
redis用于存储使用较为频繁的数据到缓存中,读取速度快,基于内存,读写速度快,也可做持久化,但是内存空间有限,当数据量超过内存空间时,需扩充内存,但内存价格贵。

MySQL 与Redis 需求上:
mysql和redis因为需求的不同,一般都是配合使用。
需要高性能的地方使用Redis,不需要高性能的地方使用MySQL。
存储数据在MySQL和Redis之间做同步。

2. 解释什么是事务,知道事务提交、回滚?

  正确回答通过率:69.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 中级

事务是并发控制单位,用户定义的一个操作序列。这些操作要么都做,要么都不做,是不可分割的的工作单位。通过事务,sql server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性,主要用于一些对操作过程的完整性比较高的程序。(事务的特性:原子性、一致性、隔离性、持久性)。

事务提交:是提交事务的所有操作:具体来说就是将所有对数据库的更新写回到磁盘上的物理数据库中,事务正常结束。

事务回滚:是数据库返回到事务开始的状态;事务在运行过程中发生某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的更新操作全部撤销,使数据回滚到事务开始时的状态。

3. 什么是分布式系统架构?

 正确回答通过率:64.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 中级

1:互联网应用的特点是:高并发,海量数据。互联网应用的用户数是没有上限的(取决于其开放特性),这也是和传统应用的本质区别。高并发指系统单位时间内收到的请求数量(取决于使用的用户数),没有上限。海量数据包括:海量数据的存储和海量数据的处理。这两个工程难题都可以使用分布式系统来解决。
简单理解,分布式系统就是把一些计算机通过网络连接起来,然后协同工作。协同工作需要解决两个问题:
1)任务分解
把一个问题拆解成若干个独立任务,每个任务在一台节点上运行,实现多任务的并发执行。
2)节点通信
节点之间互相通信,需要设计特定的通信协议来实现。协议可以采用RPC或Message Queue等方式。

2:分布式和集群的关系
分布式:一个业务分拆多个子业务,部署在不同的服务器上
集群:同一个业务,部署在多个服务器上

4. Python中列表和字典的区别,列表和元祖的区别 ?

 正确回答通过率:58.0%

[ 详情 ] 推荐指数: ★★ 试题难度: 高难

元祖(tuple):元祖常用小括号表示,即:(),元素加逗号,是元祖的标识。
列表(list):列表常用方括号表示,即:[],创建一个列表,只要把用逗号分隔的不同的数据项使用方括号括起来即可。
字典(dict):字典是由花括号{}来包含其数据的,花括号内包含键(key)和其对应的值(value),一对键和值成为一个项,键和值用冒号:隔开,项和项之间用逗号,隔开,空字典就是不包含任何项的字典,也可理解为空字典就是花括号内不包含任何内容,直接使用花括号{}表示列表和字典的区别:字典的查找和插入的速度极快,不会随着key值的增加而增加,需要占用大量的内存,内存浪费多
列表和元祖的区别:元祖比列表操作速度快,对数据不可更改、可用于字符串格式化中、可作为字典的key

5. 解释什么是脏数据?

  正确回答通过率:42.0%

[ 详情 ] 推荐指数: ★★★★★ 试题难度: 高难

一、脏数据是指什么数据
脏数据是指那些不符合预期、不合法或无效的数据,也叫“垃圾数据”、“坏数据”。脏数据可能出现在各种数据源中,包括文件、数据库、网络数据等。例如,一个数据库表中存储了身高信息,但其中有一个记录的身高被错误地输入为负数,这就是一个脏数据。
脏数据会影响数据的统计、分析和决策,甚至会导致程序崩溃或安全漏洞。因此,及时识别和清理脏数据对业务运营非常重要。

二、脏数据是指什么举例说明
脏数据具体体现为数据中的错误、缺失、重复、不一致等问题。

例如,一个电子商务网站的用户信息表中可能存在以下问题:

  1. 错误数据:用户年龄为负数或超过了一百岁;
  2. 缺失数据:用户姓名或手机号为空;
  3. 重复数据:同一用户信息被记录多次;
  4. 不一致数据:同一用户的不同信息记录中,性别、出生日期等信息不一致。

三、MySQL脏数据是指什么
在MySQL数据库中,脏数据指因为某些错误导致数据丢失、数据不一致、数据损坏或数据冲突的情况。常见的脏数据包括:

  1. 丢失数据:从数据库中意外删除数据导致数据丢失;
  2. 重复数据:同一记录被重复插入数据库中;
  3. 不一致数据:多表关联查询中返回的结果不一致;
  4. 数据损坏:文件系统故障、磁盘损坏、介质故障等原因导致数据库文件损坏。

– 举例说明重复数据的查询
SELECT user_id, COUNT() FROM user GROUP BY user_id HAVING COUNT() > 1;
四、数据库中脏数据是指什么
数据库中的脏数据包括了几乎所有可能发生的数据质量问题。它们可以是因录入错误或非法字符等原因导致的无效数据、缺失数据、外键关联错误等等
因此,数据库管理员应该关注并定期检查数据的质量、完整性和一致性,并对脏数据进行清理和维护。

五、数据是指什么
数据是以某种形式记录的信息,可以是数字、文本、图像、音频等形式。数据可以帮助我们进行分析、预测、诊断和决策。数据质量对于数据分析和决策非常重要,而脏数据则会影响数据的质量,降低数据的分析和决策价值。

六、脏数据是什么
脏数据指那些不符合预期、不合法或无效的数据,与规范的数据定义相违背。这些不规范的数据可能会妨碍数据分析和业务决策的准确性和有效性。在业务系统中,脏数据的出现被认为是偶然事件,但是它们可能会对业务的正常运行造成异常情况。用户应该保证数据的准确性和完整性来防止脏数据被插入到系统中。

七、脏数据是指
脏数据是指那些不符合预期、不合法或无效的数据,也叫做垃圾数据、坏数据等。脏数据的出现会导致各种问题,影响决策和业务分析的有效性。对于不同类型的系统,脏数据的影响也是不同的。

八、什么是读脏数据
读脏数据是指在并发数据库读操作时,一个事务读到了另一个事务未提交的脏数据。读脏数据会导致数据不一致性和幻影读等问题。
解决读脏数据问题的常用方式是通过锁机制来控制并发读写操作,例如采用共享锁和排它锁。

– 举例说明共享锁和排它锁的应用
– 在事务1中获取共享锁
START TRANSACTION;
SELECT * FROM user WHERE age > 18 FOR SHARE;
– 在事务2中获取排它锁
START TRANSACTION;
UPDATE user SET age = 30 WHERE id = 1 FOR UPDATE;

6. 解释什么是幂等性?

  正确回答通过率:41.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 高难

幂等性就是用户对同一操作发起一次请求或者多次请求的结果是一致的。不会因为多次点击二次产生副作用。简单的例子,就是支付,用户购买商品使用支付,支付扣款成功,但是返回结果的时候网络异常,此事钱已经扣了,用户再次点击,此时会产生二次扣款,结果返回成功,用户查询余额返现多扣钱了。流水记录变成了两条、这就是幂等性。

7. Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?

 正确回答通过率:62.0%

[ 详情 ] 推荐指数: ★★ 试题难度: 中级

常用的流程和措施:
1、检查系统是否有中毒的特征;
2、检查软件/硬件的配置是否符合软件的推荐标准;
3、确认当前的系统是否是独立,即没有对外提供什么消耗CPU资源的服务;
4、如果是C/S或者B/S结构的软件,需要检查是不是因为与服务器的连接有问题,或者访问有问题造成的;
5、在系统没有任何负载的情况下,查看性能监视器,确认应用程序对CPU/内存的访问情况

8. 安卓四大组件简述 ?

 正确回答通过率:35.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 高难

activity 通过Intent进行通信
service service用于在后台完成用户指定的操作
Content provider 指定数据集提供给其他应用程序
Broadcast Receiver 对外部事件进行过滤

9. 解释什么是多线程?

  正确回答通过率:59.0%

[ 详情 ] 推荐指数: ★★★★★ 试题难度: 中级

10. 进程、线程、协程的区别 ?

 正确回答通过率:53.0%

[ 详情 ] 推荐指数: ★★ 试题难度: 中级

1、一个程序至少有一个进程,一个进程至少有一个线程
2、线程的划分尺度小于进程(资源比进程少),使得多线程程序并发性高
3、进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大提高了程序的运行效率
4、线程不能独立运行,必须依存于进程中
5、一个线程可以多个协程,一个进程也可以单独拥有多个协程
6、线程进程都是同步机制,协程是异步机制

11. Http协议与Websocket协议的区别?

 正确回答通过率:48.0%

[ 详情 ] 推荐指数: ★★★★★ 试题难度: 高难

Http协议:每次都需要客户端定时轮询向服务器请求,然后服务器再向客户端发送数据
Websocket协议:允许服务端主动向客户端推送数据,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输保持连接状态:与http不同的是,websocket需要先创建连接,这就使得其成为一种有状态的协议,之后通信时可以省略部分状态信息。而http请求可能需要每个请求都携带状态信息

12. 如何查看Linux服务器的负载?

 正确回答通过率:60.0%

[ 详情 ] 推荐指数: ★★ 试题难度: 高难

1 top : 展示 CPU 和内存的使用情况
2 iostat : 查看 io 的开销
3 uptime : 查看过去一分钟、五分钟、十五分钟的负载平均值
4 free : 查看内存剩余量
5 df : 磁盘使用情况
6 du: 文件占用信息
7 netstat :显示网络状态

13. HTTP常见的状态码?

 正确回答通过率:78.0%

[ 详情 ] 推荐指数: ★★ 试题难度: 中级

200 ok :表示访问成功,请求正常处理完毕
404 Not Found :表示没有找到资源,一般页面提示:请求的资源无法找到等类似提示
403 Forbidden : 表示访问被拒绝
500 Interal Server Error: 表示服务器内部出现错误,无法完成请求
504 Gateway Timeout: 表示请求超时

14. 解释什么是版本控制?常见的版本控制系统有哪些?

 正确回答通过率:63.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 中级

最常见的版本控制系统有:Git和SVN
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git有很多图形界面工具,推荐SourceTree,它是由Atlassian开发的免费Git图形界面工具,可以操作任何Git库。
SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统。TortoiseSVN是一款非常易于使用的Windows版本控制/版本控制/源代码控制软件。它基于Apache™ 颠覆(SVN)®;TortoiseSVN为Subversion提供了一个漂亮而简单的用户界面。我们需要在本地安装客户端:TortoiseSVN,安装成功之后输入用户名和密码进行登录,即可查看到SVN上的文件内容

15. Cookie的介绍?

 正确回答通过率:78.0%

[ 详情 ] 推荐指数: ★★★★★ 试题难度: 初级

cookie 就是浏览器储存在用户电脑上的一小段文本文件。cookie 是纯文本格式,不包含任何可执行的代码。一个 Web 页面或服务器告知浏览器按照一定规范来储存这些信息,并在随后的请求中将这些信息发送至服务器,Web 服务器就可以使用这些信息来识别不同的用户。大多数需要登录的网站在用户验证成功之后都会设置一个 cookie,只要这个 cookie 存在并可以,用户就可以自由浏览这个网站的任意页面。再次说明,cookie 只包含数据,就其本身而言并不有害。
Cookie 可以解决http无状态的问题,与服务器进行交互,作为http规范存在。它具有极高的简便性、可扩展性、和可用性、也可以通过加密和ssl技术来提高其安全性。因此推荐使用cookie作为标识而不是身份验证的工具。其中cookie的作用就是为了解决HTTP协议无状态的缺陷所作出的努力。

16. 快速区分bug来源以及常见状态码?

 正确回答通过率:73.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 中级

状态码 原因短语
1XX Informational (信息性状态码) 接收的请求正在处理
2XX Success (成功状态码) 请求正常处理完毕
3XX Redirection (重定向状态码) 需要进行附加操作以完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求
5XX Server Error (服务器错误状态码) 服务器处理请求出错

17. http与https区别(加密传输)?

  正确回答通过率:91.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 初级

http协议和https协议的区别:传输信息安全性不同、连接方式不同、端口不同、证书zhuan申请方式不同、传输信息安全性不同
1、http协议:是超文本传输协议,信息是明文传输。如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息;
2、https协议:是具有安全性的ssl加密传输协议,为浏览器和服务器之间的通信加密,确保数据传输的安全。
二、连接方式不同
1、http协议:http的连接很简单,是无状态的;
2、https协议:是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。
三、端口不同
http协议:使用的端口是80; https协议:使用的端口是443。
四、证书申请方式不同
http协议:免费申请 https协议:需要到ca申请证书,一般免费证书很少,需要交费

18. Get和Post的区别?

 正确回答通过率:76.0%

[ 详情 ] 推荐指数: ★★★★★ 试题难度: 初级

1、GET请求在URL中传送的参数是有长度限制的,而POST没有
2、GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
3、GET参数通过URL传递,POST放在Request body中。
4、GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
5、GET请求只能进行url编码,而POST支持多种编码方式。
6、GET请求会被浏览器主动cache,而POST不会,除非手动设置。
7、GET产生的URL地址可以被Bookmark,而POST不可以。
8、GET在浏览器回退时是无害的,而POST会再次提交请求。

19. 解释什么是负载测试?

  正确回答通过率:80.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 初级

负载测试主要是考察软件系统在既定负载下的性能表现。就是站在用户的角度去观察一定条件下软件系统的性能表现。期望结果是用户的性能指标需求得到满足。性能指标一般体现为响应时间、并发量等。

20. 常用的Linux命令?

  正确回答通过率:42.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 高难

shutdown -h now 立刻关机
shutdown -h 5 5分钟后关
poweroff 立刻关机
shutdown -r now 立刻重启
shutdown -r 5 5分钟后重启
reboot 立刻重启
cd / 切换到根目录cd
/usr 切换到根目录下的usr目录
cd …/ 切换到上一级目录 或 cd … cd ~ 切换到home目录
cd - 切换到上次访问的目录
ls 查看当前目录下的所有目录和文件
ls -a查看当前目录下的所有目录和文件(包括隐藏的文件)
ls -l 列表查看当前目录下的所有目录和文件(列表查看,显示更多信息)
ls / 查看指定目录下的所有目录和文件
查找命令
grep 命令是一种强大的文本搜索工具
find 命令在目录结构中搜索文件,并对搜索结果执行指定的作。
locate 让使用者可以很快速的搜寻某个路径。
whereis 命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。
which 命令的作用是在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
命令格式
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
参数说明:
-u user:用来设定某个用户的crontab服务
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容。如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:删除定时任务配置,从/var/spool/cron目录中删除某个用的crontab
文件,如果不指定用户,则默认删除当前用户的crontab文件。
命令:pwd 查看当前目录路径
命令:ps -ef 查看所有正在运行的进程
命令:kill pid 或者 kill -9 pid(强制杀死进程) pid:进程号
ifconfig:查看网卡信息
命令:ifconfig 或 ifconfig | more
ping:查看与某台机器的连接情况
命令:ping ip
netstat -an:查看当前系统端口
命令:netstat -an
搜索指定端口
命令:netstat -an | grep 8080

21. Linux目录操作?

 正确回答通过率:51.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 中级

【增】 mkdir
mkdir aaa 在当前目录下创建一个名为aaa的目录
mkdir /usr/aaa 在指定目录下创建一个名为aaa的目录
【删】rm
删除文件:
rm 文件 删除当前目录下的文件
rm -f 文件 删除当前目录的的文件(不询问)
删除目录:
rm -r aaa 递归删除当前目录下的aaa目录
rm -rf aaa 递归删除当前目录下的aaa目录(不询问)
全部删除:
rm -rf * 将当前目录下的所有目录和文件全部删除
rm -rf /* 【慎用!慎用!慎用!】将根目录下的所有文件全部删除
注意:rm不仅可以删除目录,也可以删除其他文件或压缩包,为了方便大家的记忆,无论删除任何目录或文件,都直接使用 rm -rf 目录/文件/压缩包
【改】mv 和 cp
重命名目录
命令:mv 当前目录 新目录
例如:mv aaa bbb 将目录aaa改为bbb
剪切目录
命令:mv 目录名称 目录的新位置(将/usr/tmp目录下的aaa目录剪切到/usr目录下面 mv/usr/tmp/aaa/usr)
拷贝目录
命令:cp -r 目录名称 目录拷贝的目标位置 -r代表递归
(将/usr/tmp目录下的aaa目录复制到 /usr目录下面 cp /usr/tmp/aaa /usr)
【查】find
命令:find 目录 参数 文件名称
示例:find /usr/tmp -name ‘a*’ 查找/usr/tmp目录下的所有以a开头的目录或文件

22. Linux文件操作?

 正确回答通过率:63.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 中级

【增】touch
touch 文件名(示例:在当前目录创建一个名为aa.txt的文件 touch aa.txt)
【删】 rm
rm -rf 文件名
【改】 vi或vim
vi编辑器的3种模式
基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
1、command mode 命令行模式下的常用命令:
【1】控制光标移动: ↑,↓,j
【2】删除当前行: dd
【3】查找:/字符
【4】进入编辑模式: i o a
【5】进入底行模式: :

2、Insert mode编辑模式
编辑模式下常用命令:
【1】ESC 退出编辑模式到命令行模式;

3、last line mode底行模式下常用命令:
【1】退出编辑: :q
【2】强制退出: :q!
【3】保存并退出: :wq

【查】文件的查看命令:cat/more/less/tail
cat:看最后一屏 cat sudo.conf(使用cat查看/etc/sudo.conf文件,只能显示最后一屏内容)

more:百分比显示more sudo.conf(使用more查看/etc/sudo.conf文件,可以显示百分比,回车可以向下一行,空格可以向下一页,q可以退出查看)

less:翻页查看less sudo.conf(使用less查看/etc/sudo.conf文件,可以使用键盘上的PgUp和PgDn向上 和向下翻页,q结束查看)

tail:指定行数或者动态查看tail -10 sudo.conf(使用tail -10 查看/etc/sudo.conf文件的后10行,Ctrl+C结束)

打包和压缩
Windows的压缩文件的扩展名 .zip/.rar
linux中的打包文件:aa.tar
linux中的压缩文件:bb.gz
linux中打包并压缩的文件:.tar.gz
Linux中的打包文件一般是以.tar结尾的,压缩的命令一般是以.gz结尾的。
命令:tar -zcvf 打包压缩后的文件名 要打包的文件,其中:z:调用gzip压缩命令进行压缩
c:打包文件
v:显示运行过程
f:指定文件名
示例:打包并压缩/usr/tmp 下的所有文件 压缩后的压缩包指定名称为xxx.tar
tar -zcvf ab.tar aa.txt bb.txt
或:tar -zcvf ab.tar *
解压
命令:tar [-zxvf] 压缩文件
其中:x:代表解压
示例:将/usr/tmp 下的ab.tar解压到当前目录下
tar -zxvf ab.tar
示例:将/usr/tmp 下的ab.tar解压到根目录/usr下
tar -zxvf ab.tar -C /usr------C代表指定解压的位置

23. 常用的MySQL命令?

  正确回答通过率:77.0%

[ 详情 ] 推荐指数: ★★★★★ 试题难度: 中级

【增】insert
insert into 表名 values(值1,值2,…);
insert into 表名(字段1,字段2…) values(值1,值2,…);(较常用)
insert into 表名(字段1,字段2…) values(值1,值2,…),(值1,值2,…),(值1,值2,…);

【删】delete
delete from 表名 where 条件

【改(更新)】update
update 表名 set字段1 = 值1, 字段2 = 值2 where 条件

重要*【查】select
select * from 表名 查询表中的所有数据
select 字段 from 表名 指定数据查询
select 字段 from 表名 where 条件 根据条件查询出来的数据

where 条件后面跟的条件
关系:>,<,>=,<=,!=
逻辑:or, and
区间:id between 4 and 6 ;闭区间,包含边界

【排序】
select 字段 from 表 order by 字段 排序关键词(desc | asc)
排序关键词 desc 降序 asc 升序(默认)
通过字段来排序 :select * from star orser by money desc, age asc;
多字段排序 :select 字段 from 表 order by 字段1 desc |asc,…字段n desc| asc;

【常用的统计函数】 sum,avg,count,max,min

24. MySQL多表联合查询 ?

 正确回答通过率:51.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 高难

1.内连接
隐式内连接 select username,name from user,goods where user,gid=gods,gid;
显示内连接 select username,from user inner join goods on user.gid=goods.gid;
select * from user left join goods on user.gid=goods.gid;
2.外链接 左/右连接
select * from user where gid in(select gid from goods);
select * from user right jOin goods on user.gid=goods.gid;
3.数据联合查询
select * from user left join goods on user.gid=goods.gid union select * from user right join goods on user.gid=goods.gid;
4.两个表同时更新
update user u, goods g set u.gid=12,g.price=1 where u.id=2 and u.gid=g.gid;

25. 描述软件产生内存泄露的原因以及检查方式?

 正确回答通过率:71.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 初级

内存泄露的原因,主要是由于开发过程当中申请了计算机资源(例如对象、内存等),但是使用资源完成以后没有及时释放资源导致的。例如在C语言当中使用了malloc申请了内存,但是未使用free来释放内存。

26. 简述什么是值传递,什么是地址传递,两者区别是什么?

 正确回答通过率:72.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 中级

值传递主调函数传递给被调函数的是值的拷贝,不是原值;地址传递主调函数传递给被调函数的是值的地址。区别是值传递被调函数中的操作不改变主调函数的值,而地址传递则不同。

27. 结构化程序设计和面向对象程序设计各自的特点及优缺点是什么?

 正确回答通过率:75.0%

[ 详情 ] 推荐指数: ★★ 试题难度: 初级

结构化程序设计思想采用了模块分解与功能抽象和自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子程序,便于开发和维护。它的重点在于把功能进行分解。但是由于在实际开发过程当中需求会经常发生变化,因此,它不能很好的适应需求变化的开发过程。结构化程序设计是面向过程的。

面向对象程序设计以需求当中的数据作为中心,来进行设计,具有良好的代码重用性。
封装性:也叫数据隐藏,用户无需知道内部工作流程,只要知道接口和操作就可以的,C++中一般用类来实现封装。

继承性: 一种支持重用的思想,在现有的类型派生出新的子类,例如新型电视机在原有型号的电视机上增加若干中功能而得到,新型电视机是原有电视机的派生,继承了原有电视机的属性,并增加了新的功能。

多态性:指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。
动态联编:指一个计算机程序自身彼此关联的过程,按照联编所进行的阶段不同,可分为两种不同的联编方法:静态联编和动态联编。

28. 简述什么是存储过程和触发器?

 正确回答通过率:92.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 初级

存储过程:是数据库中的一个对象,Transact-SQL 语句的预编译集合,这些语句在一个名称下存储并作为一个单元进行处理。(可以理解为C语言中的函数,有参数、返回值等函数特性)
触发器是一种特殊类型的存储过程,当使用下面的一种或多种数据修改操作在指定表中对数据进行修改时,触发器会生效:UPDATE、INSERT 或 DELETE。

29. 请简述DNS、活动目录、域的概念?

 正确回答通过率:92.0%

[ 详情 ] 推荐指数: ★★★★★ 试题难度: 初级

DNS:域名服务,作用是将网络域名解析成IP地址;
活动目录:微软提供的目录服务的一种,它存储有关网络上的对象信息,并使管理员和用户更方便的查找和使用这类信息;
域:网络系统的一个安全边界,在一个域当中,计算机和用户共享一些列的安全信息。

30. 描述TCP/IP协议的层次结构,以及每一层中重要协议?

  正确回答通过率:56.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 高难

TCP/IP 协议
应用层/Application HTTP、SMTP、FTP
传输层/Transport TCP、UDP
网络层/Network IP
链路层/Link ARP、RARP

31. 说出4种以上常用的操作系统及其主要的应用范围(微软的操作系统除外)?

 正确回答通过率:77.0%

[ 详情 ] 推荐指数: ★★ 试题难度: 初级

Linux(Red Hat、SUSE、Debian、Trubo Linux):主要用于搭建各类服务器
MAC OS:苹果机的操作系统,用于图像处理
Unix(AIX:IBM服务器的专用操作系统;
Solaris:Sun操作系统;FreeBSD、NetBSD)

32. Windows操作系统中PATH环境变量的作用是什么?

 正确回答通过率:73.0%

[ 详情 ] 推荐指数: ★★ 试题难度: 初级

PATH是Windows操作系统环境变量,PATH作用是用户在命令行窗口执行一个命令,则在PATH变量设置的目录下依次寻找该命令或对应的执行文件,若找到,则执行,若没有找到,则命令行窗口返回无效命令。

33. Ghost的主要用途和常用方法?

 正确回答通过率:71.0%

[ 详情 ] 推荐指数: ★★ 试题难度: 中级

Ghost是一个非常著名的硬盘克隆工具。该工具的主要作用是可以将一个硬盘或硬盘中的某个分区原封不动的复制到另一个硬盘或其他的分区中。如果你需要备份启动分区或者是需要在多台机器上安装相应的系统和应用程序,都可以通过Ghost来实现,相信通过这个工具备份,恢复速度和硬盘安装速度会成倍的提高。
Norton Ghost有一个很大的特点,就是在克隆硬盘时不会改变任何文件信息,程序可以很好的支持FAT16、FAT32以及NTFS格式的文件分配结构(其中包括Windows 2000的文件分配格式),虽然是DOS环境下运行的程序,但工具可支持Win 9x的长文件名特性。
常用方法包括:硬盘克隆、分区克隆、硬盘或分区克隆成镜像文件等。

34. 对RUP.CMM,CMMI,XP,PSP.TSP的认识?

  正确回答通过率:35.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 高难

软件过程标准:CMMI、PSP、TSP、RUP、软件工程规范国家标准;(AP、XP、ASD等开发过程思想好像还不能称其为标准)
RUP(Rational Unified Process)是Rational公司提出的一套开发过程模型,它是一个面向对象软件工程的通用业务流程。它描述了一系列相关的软件工程流程,它们具有相同的结构,即相同的流程构架。RUP 为在开发组织中分配任务和职责提供了一种规范方法,其目标是确保在可预计的时间安排和预算内开发出满足最终用户需求的高品质的软件。RUP具有两个轴,一个轴是时间轴,这是动态的。另一个轴是工作流轴,这是静态的。在时间轴上,RUP划分了四个阶段:初始阶段、细化阶段、构造阶段和发布阶段。每个阶段都使用了迭代的概念。在工作流轴上,RUP设计了六个核心工作流程和三个核心支撑工作流程,核心工作流轴包括:业务建模工作流、需求工作流、分析设计工作流、实现工作流、测试工作流和发布工作流。核心支撑工作流包括:环境工作流、项目管理工作流和配置与变更管理工作流。RUP 汇集现代软件开发中多方面的最佳经验,并为适应各种项目及组织的需要提供了灵活的形式。作为一个商业模型,它具有非常详细的过程指导和模板。但是同样由于该模型比较复杂,因此在模型的掌握上需要花费比较大的成本。尤其对项目管理者提出了比较高的要求。
CMM(Capability Maturity Model能力成熟度模型) 由美国卡内基-梅隆大学的软件工程研究所(简称SEI)受美国国防部委托,于1991年研究制定,初始的主要目的是为了评价美国国防部的软件合同承包组织的能力,后因为在软件企业应用CMM模型实施过程改进取得较大的成功,所以在全世界范围内被广泛使用,SEI同时建立了主任评估师评估制度,CMM的评估方法为CBA-IPI。CMM的本质是软件管理工程的一个部分。它是对于软件组织在定义,实现,度量,控制和改善其软件过程的进程中各个发展阶段的描述。他通过5个不断进化的层次来评定软件生产的历史与现状:初始层是混沌的过程;可重复层是经过训练的软件过程;定义层是标准一致的软件过程;管理层是可预测的软件过程;优化层是能持续改善的软件过程。
CMM/PSP/TSP即软件能力成熟度模型/ 个体软件过程/群组软件过程,是1987年美国 Carnegie Mellon 大学软件工程研究所(CMU/SEI)以W.S.Humphrey为首的研究组发表的研究成果"承制方软件工程能力的评估方法"。
CMMI是SEI于2000年发布的CMM的新版本。CMMI不但包括了软件开发过程改进,还包含系统集成、软硬件采购等方面的过程改进内容。
CMMI纠正了CMM存在的一些缺点,使其更加适用企业的过程改进实施。CMMI适用SCAMPI评估方法。需要注意的是,SEI没有废除CMM模型,只是停止了CMM评估方法:CBA-IPI。现在如要进行CMM评估,需使用SCAMPI方法。但CMMI模型最终代替CMM模型的趋势不可避免。
XP (极限编程)规定了一组核心价值和方法,可以让软件开发人员发挥他们的专长:编写代码。XP 消除了大多数重量型过程的不必要产物,通过减慢开发速度、耗费开发人员的精力(例如干特图、状态报告,以及多卷需求文档)从目标偏离。

35. 防火墙如何保证安全的?主要有哪些?

  正确回答通过率:32.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 高难

从防火墙的软、硬件形式来分的话,防火墙可以分为软件防火墙和硬件防火墙以及芯片级防火墙。
第一种:软件防火墙
软件防火墙运行于特定的计算机上,它需要客户预先安装好的计算机操作系统的支持,一般来说这台计算机就是整个网络的网关。俗称“个人防火墙”。软件防火墙就像其它的软件产品一样需要先在计算机上安装并做好配置才可以使用。防火墙厂商中做网络版软件防火墙最出名的莫过于Checkpoint。使用这类防火墙,需要网管对所工作的操作系统平台比较熟悉。
第二种:硬件防火墙
这里说的硬件防火墙是指“所谓的硬件防火墙”。之所以加上"所谓"二字是针对芯片级防火墙说的了。它们最大的差别在于是否基于专用的硬件平台。目前市场上大多数防火墙都是这种所谓的硬件防火墙,他们都基于PC架构,就是说,它们和普通的家庭用的PC没有太大区别。在这些PC架构计算机上运行一些经过裁剪和简化的操作系统,最常用的有老版本的Unix、Linux和FreeBSD系统。 值得注意的是,由于此类防火墙采用的依然是别人的内核,因此依然会受到OS(操作系统)本身的安全性影响。
传统硬件防火墙一般至少应具备三个端口,分别接内网,外网和DMZ区(非军事化区),现在一些新的硬件防火墙往往扩展了端口,常见四端口防火墙一般将第四个端口做为配置口、管理端口。很多防火墙还可以进一步扩展端口数目。
第三种:芯片级防火墙
芯片级防火墙基于专门的硬件平台,没有操作系统。专有的ASIC芯片促使它们比其他种类的防火墙速度更快,处理能力更强,性能更高。做这类防火墙最出名的厂商有NetScreen、FortiNet、Cisco等。这类防火墙由于是专用OS(操作系统),因此防火墙本身的漏洞比较少,不过价格相对比较高昂。
防火墙技术虽然出现了许多,但总体来讲可分为“包过滤型”和“应用代理型”两大类。前者以以色列的Checkpoint防火墙和美国Cisco公司的PIX防火墙为代表,后者以美国NAI公司的Gauntlet防火墙为代表。
(1). 包过滤(Packet filtering)型
包过滤型防火墙工作在OSI网络参考模型的网络层和传输层,它根据数据包头源地址,目的地址、端口号和协议类型等标志确定是否允许通过。只有满足过滤条件的数据包才被转发到相应的目的地,其余数据包则被从数据流中丢弃。
包过滤方式是一种通用、廉价和有效的安全手段。之所以通用,是因为它不是针对各个具体的网络服务采取特殊的处理方式,适用于所有网络服务;之所以廉价,是因为大多数路由器都提供数据包过滤功能,所以这类防火墙多数是由路由器集成的;之所以有效,是因为它能很大程度上满足了绝大多数企业安全要求。
在整个防火墙技术的发展过程中,包过滤技术出现了两种不同版本,称为“第一代静态包过滤”和“第二代动态包过滤”。
●第一代静态包过滤类型防火墙
这类防火墙几乎是与路由器同时产生的,它是根据定义好的过滤规则审查每个数据包,以便确定其是否与某一条包过滤规则匹配。过滤规则基于数据包的报头信息进行制订。报头信息中包括IP源地址、IP目标地址、传输协议(TCP、UDP、ICMP等等)、TCP/UDP目标端口、ICMP消息类型等。
●第二代动态包过滤类型防火墙
这类防火墙采用动态设置包过滤规则的方法,避免了静态包过滤所具有的问题。这种技术后来发展成为包状态监测(Stateful Inspection)技术。采用这种技术的防火墙对通过其建立的每一个连接都进行跟踪,并且根据需要可动态地在过滤规则中增加或更新条目。
包过滤方式的优点是不用改动客户机和主机上的应用程序,因为它工作在网络层和传输层,与应用层无关。但其弱点也是明显的:过滤判别的依据只是网络层和传输层的有限信息,因而各种安全要求不可能充分满足;在许多过滤器中,过滤规则的数目是有限制的,且随着规则数目的增加,性能会受到很大地影响;由于缺少上下文关联信息,不能有效地过滤如UDP、RPC(远程过程调用)一类的协议;另外,大多数过滤器中缺少审计和报警机制,它只能依据包头信息,而不能对用户身份进行验证,很容易受到“地址欺骗型”攻击。对安全管理人员素质要求高,建立安全规则时,必须对协议本身及其在不同应用程序中的作用有较深入的理解。因此,过滤器通常是和应用网关配合使用,共同组成防火墙系统。
(2). 应用代理(Application Proxy)型
应用代理型防火墙是工作在OSI的最高层,即应用层。其特点是完全"阻隔"了网络通信流,通过对每种应用服务编制专门的代理程序,实现监视和控制应用层通信流的作用。其典型网络结构如图所示。
在代理型防火墙技术的发展过程中,它也经历了两个不同的版本,即:第一代应用网关型代理防火和第二代自适应代理防火墙。
第一代应用网关(Application Gateway)型防火墙
这类防火墙是通过一种代理(Proxy)技术参与到一个TCP连接的全过程。从内部发出的数据包经过这样的防火墙处理后,就好像是源于防火墙外部网卡一样,从而可以达到隐藏内部网结构的作用。这种类型的防火墙被网络安全专家和媒体公认为是最安全的防火墙。它的核心技术就是代理服务器技术。
第二代自适应代理(Adaptive proxy)型防火墙
它是近几年才得到广泛应用的一种新防火墙类型。它可以结合代理类型防火墙的安全性和包过滤防火墙的高速度等优点,在毫不损失安全性的基础之上将代理型防火墙的性能提高10倍以上。组成这种类型防火墙的基本要素有两个:自适应代理服务器(Adaptive Proxy Server)与动态包过滤器(Dynamic Packet filter)。
在“自适应代理服务器”与“动态包过滤器”之间存在一个控制通道。在对防火墙进行配置时,用户仅仅将所需要的服务类型、安全级别等信息通过相应Proxy的管理界面进行设置就可以了。然后,自适应代理就可以根据用户的配置信息,决定是使用代理服务从应用层代理请求还是从网络层转发包。如果是后者,它将动态地通知包过滤器增减过滤规则,满足用户对速度和安全性的双重要求。
代理类型防火墙的最突出的优点就是安全。由于它工作于最高层,所以它可以对网络中任何一层数据通信进行筛选保护,而不是像包过滤那样,只是对网络层的数据进行过滤。
另外代理型防火墙采取是一种代理机制,它可以为每一种应用服务建立一个专门的代理,所以内外部网络之间的通信不是直接的,而都需先经过代理服务器审核,通过后再由代理服务器代为连接,根本没有给内、外部网络计算机任何直接会话的机会,从而避免了入侵者使用数据驱动类型的攻击方式入侵内部网。
代理防火墙的最大缺点就是速度相对比较慢,当用户对内外部网络网关的吞吐量要求比较高时,代理防火墙就会成为内外部网络之间的瓶颈。那因为防火墙需要为不同的网络服务建立专门的代理服务,在自己的代理程序为内、外部网络用户建立连接时需要时间,所以给系统性能带来了一些负面影响,但通常不会很明显。
防火墙分类3
从防火墙结构上分,防火墙主要有:单一主机防火墙、路由器集成式防火墙和分布式防火墙三种。
单一主机防火墙是最为传统的防火墙,独立于其它网络设备,它位于网络边界。
这种防火墙其实与一台计算机结构差不多(如下图),同样包括CPU、内存、硬盘等基本组件,当然主板更是不能少了,且主板上也有南、北桥芯片。它与一般计算机最主要的区别就是一般防火墙都集成了两个以上的以太网卡,因为它需要连接一个以上的内、外部网络。其中的硬盘就是用来存储防火墙所用的基本程序,如包过滤程序和代理服务器程序等,有的防火墙还把日志记录也记录在此硬盘上。虽然如此,但我们不能说它就与我们平常的PC机一样,因为它的工作性质,决定了它要具备非常高的稳定性、实用性,具备非常高的系统吞吐性能。正因如此,看似与PC机差不多的配置,价格甚远。
随着防火墙技术的发展及应用需求的提高,原来作为单一主机的防火墙现在已发生了许多变化。最明显的变化就是现在许多中、高档的路由器中已集成了防火墙功能,还有的防火墙已不再是一个独立的硬件实体,而是由多个软、硬件组成的系统,这种防火墙,俗称“分布式防火墙”。
原来单一主机的防火墙由于价格非常昂贵,仅有少数大型企业才能承受得起,为了降低企业网络投资,现在许多中、高档路由器中集成了防火墙功能。如Cisco IOS防火墙系列。但这种防火墙通常是较低级的包过滤型。这样企业就不用再同时购买路由器和防火墙,大大降低了网络设备购买成本。
分布式防火墙再也不是只是位于网络边界,而是渗透于网络的每一台主机,对整个内部网络的主机实施保护。在网络服务器中,通常会安装一个用于防火墙系统管理软件,在服务器及各主机上安装有集成网卡功能的PCI防火墙卡 ,这样一块防火墙卡同时兼有网卡和防火墙的双重功能。这样一个防火墙系统就可以彻底保护内部网络。各主机把任何其它主机发送的通信连接都视为“不可信”的,都需要严格过滤。而不是传统边界防火墙那样,仅对外部网络发出的通信请求“不信任”。
防火墙分类4
如果按防火墙的应用部署位置分,可以分为边界防火墙、个人防火墙和混合防火墙三大类。
边界防火墙是最为传统的那种,它们于内、外部网络的边界,所起的作用的对内、外部网络实施隔离,保护边界内部网络。这类防火墙一般都是硬件类型的,价格较贵,性能较好。
个人防火墙安装于单台主机中,防护的也只是单台主机。这类防火墙应用于广大的个人用户,通常为软件防火墙,价格最便宜,性能也最差。
混合式防火墙可以说就是“分布式防火墙”或者“嵌入式防火墙”,它是一整套防火墙系统,由若干个软、硬件组件组成,分布于内、外部网络边界和内部各主机之间,既对内、外部网络之间通信进行过滤,又对网络内部各主机间的通信进行过滤。它属于最新的防火墙技术之一,性能最好,价格也最贵。
防火墙分类5
如果按防火墙的性能来分可以分为百兆级防火墙和千兆级防火墙两类。
因为防火墙通常位于网络边界,所以不可能只是十兆级的。这主要是指防火的通道带宽(Bandwidth),或者说是吞吐率。当然通道带宽越宽,性能越高,这样的防火墙因包过滤或应用代理所产生的延时也越小,对整个网络通信性能的影响也就越小。

36. 简述c/s模式或者b/s模式?

 正确回答通过率:71.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 初级

C/S模式:客户端/服务器模式。工作原理:Client向Server提交一个请求;Server则使用一些方法处理这个请求,并将效果返回给Client。
B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构。B/S结构,主要是利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(VBScript、JavaScript…)和ActiveX技术,用通用浏览器就实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术。

37. HTTP协议的特点是什么?

 正确回答通过率:76.0%

[ 详情 ] 推荐指数: ★★ 试题难度: 初级

1)HTTP是无连接
无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

2)HTTP是媒体独立的
这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。

3)HTTP是无状态
HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

38. HTTP客户端请求消息包含哪几部分?

 正确回答通过率:83.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 初级

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:
请求行(request line)
请求头部(header)
空行
请求数据

39. HTTP服务器响应消息包含哪些信息?

 正确回答通过率:83.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 初级

HTTP响应由四个部分组成,分别是:
状态行
消息报头
空行
响应正文

40. 解释什么是Soap?

  正确回答通过率:88.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 初级

OAP是简单对象访问协议的缩写。它是一种基于XML的消息传递协议,用于在计算机之间交换信息。SOAP是XML规范的应用程序。
注意事项
下面提到的是用户应该注意的一些重点。这些要点简要介绍了SOAP的性质 -
SOAP是通过Internet进行通信的通信协议。
SOAP可以扩展HTTP的XML消息传递。
SOAP为Web服务提供数据传输。
SOAP可以交换完整的文档或调用远程过程。
SOAP可用于广播消息。
SOAP与平台和语言无关。
SOAP是定义发送什么信息的XML方式。
SOAP使客户端应用程序能够轻松连接到远程服务并调用远程方法。
虽然SOAP可以用于各种消息系统,并且可以通过各种传输协议进行传送,但SOAP的初始重点是通过HTTP传输的远程过程调用。

41. PUT和POST方法有什么区别?

 正确回答通过率:55.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 高难

POST用于在服务器上创建新对象,PUT请求用于在替换对象。当客户端将页面发送到服务器,然后服务器让客户端知道它放在何处时,应该使用POST。当客户端指定页面的位置时,应使用PUT。

42. SOAP 和 REST 有什么区别?

  正确回答通过率:81.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 初级

SOAP 是一种协议,两台计算机可以通过共享 XML 文档进行通信。
SOAP 仅允许 XML
基于 SOAP 的读取不能被缓存
SOAP 就像 定制桌面应用程序,它紧密连接到服务器
SOAP 比 REST 慢
它在 HTTP 上运行,但封装了消息

Rest 是基于网络的软件体系结构的服务体系结构和设计
REST 支持许多不同的数据格式
REST 读取可被缓存
A REST 客户更像是一个浏览器; 它知道如何标准化方法,并且应用程序必须适合其中
REST 比 SOAP
更快,它使用 HTTP 标头保存元信息

43. 简述HTTPS的工作原理?

  正确回答通过率:94.0%

[ 详情 ] 推荐指数: ★★ 试题难度: 初级

HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。
客户端在使用HTTPS方式与Web服务器通信时有以下几个步骤,如图所示。
(1)客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。
(2)Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。
(3)客户端的浏览器与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
(4)客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
(5)Web服务器利用自己的私钥解密出会话密钥。
(6)Web服务器利用会话密钥加密与客户端之间的通信。

44. 简述HTTPS的缺点?

 正确回答通过率:72.0%

[ 详情 ] 推荐指数: ★★ 试题难度: 中级

HTTPS有很大的优势,但其相对来说,还是存在不足之处的:
(1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;
(2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;
(3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。
(4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。
(5)HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用。最关键的,SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行。

45. 常用设计模式有哪些?

  正确回答通过率:75.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 初级

设计模式根据工作的目的,分为创建型模式、结构型模式和行为型模式三类。
创建型模式:单例模式、工厂方法模式、抽象工厂模式、创建者模式、原型模式。
结构型模式:适配器模式、代理模式、装饰器模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

软件设计七大原则(OOP原则)
开闭原则:对扩展开放,对修改关闭。
里氏替换原则:不要破坏继承体系,子类重写方法功能发生改变,不应该影响父类方法的含义。
依赖倒置原则:要面向接口编程,不要面向实现编程。
单一职责原则:控制类的粒度大小、将对象解耦、提高其内聚性。
接口隔离原则:要为各个类建立它们需要的专用接口。
迪米特法则:一个类应该保持对其它对象最少的了解,降低耦合度。
合成复用原则:尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。
实际上,七大原则的目的只有一个:降低对象之间的耦合,增加程序的可复用性、可扩展性和可维护性。

46. 分布式和集群的概念?

 正确回答通过率:70.0%

[ 详情 ] 推荐指数: ★★★★★ 试题难度: 中级

分布式:是指将不同的业务分布在不同的地方,
集群:是指将几台服务器集中在一起,实现同一业务。

分布式中的每一个节点,都可以做集群,而集群并不一定就是分布式的。集群有组织性,一台服务器垮了,其它的服务器可以顶上来,而分布式的每一个节点,都完成不同的业务,一个节点垮了,哪这个业务就不可访问了。

47. TCP的三次握手?

  正确回答通过率:74.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 中级

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

48. OSI七层模型?

 正确回答通过率:58.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 中级

【物理层】
在OSI参考模型中,物理层(Physical Layer)是参考模型的最低层,也是OSI模型的第一层。
物理层的主要功能是:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。

【数据链路层】
数据链路层(Data Link Layer)是OSI模型的第二层,负责建立和管理节点间的链路。该层的主要功能是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。
在计算机网络中由于各种干扰的存在,物理链路是不可靠的。因此,这一层的主要功能是在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。
该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。
MAC子层的主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质的访问控制;
LLC子层的主要任务是建立和维护网络连接,执行差错校验、流量控制和链路控制。
数据链路层的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层;并且,还负责处理接收端发回的确认帧的信息,以便提供可靠的数据传输。

【网络层】
网络层(Network Layer)是OSI模型的第三层,它是OSI参考模型中最复杂的一层,也是通信子网的最高一层。它在下两层的基础上向资源子网提供服务。其主要任务是:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。该层控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。具体地说,数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。
一般地,数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网间的通信。例如在广域网之间通信时,必然会遇到路由(即两节点间可能有多条路径)选择问题。
在实现网络层功能时,需要解决的主要问题如下:
寻址:数据链路层中使用的物理地址(如MAC地址)仅解决网络内部的寻址问题。在不同子网之间通信时,为了识别和找到网络中的设备,每一子网中的设备都会被分配一个唯一的地址。由于各子网使用的物理技术可能不同,因此这个地址应当是逻辑地址(如IP地址)。
交换:规定不同的信息交换方式。常见的交换技术有:线路交换技术和存储转发技术,后者又包括报文交换技术和分组交换技术。
路由算法:当源节点和目的节点之间存在多条路径时,本层可以根据路由算法,通过网络为数据分组选择最佳路径,并将信息从最合适的路径由发送端传送到接收端。

连接服务:与数据链路层流量控制不同的是,前者控制的是网络相邻节点间的流量,后者控制的是从源节点到目的节点间的流量。其目的在于防止阻塞,并进行差错检测。

【传输层】
OSI下3层的主要任务是数据通信,上3层的任务是数据处理。而传输层(Transport Layer)是OSI模型的第4层。因此该层是通信子网和资源子网的接口和桥梁,起到承上启下的作用。

该层的主要任务是:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。传输层的作用是向高层屏蔽下层数据通信的细节,即向用户透明地传送报文。该层常见的协议:TCP/IP中的TCP协议、Novell网络中的SPX协议和微软的NetBIOS/NetBEUI协议。
传输层提供会话层和网络层之间的传输服务,这种服务从会话层获得数据,并在必要时,对数据进行分割。然后,传输层将数据传递到网络层,并确保数据能正确无误地传送到网络层。因此,传输层负责提供两节点之间数据的可靠传送,当两节点的联系确定之后,传输层则负责监督工作。综上,传输层的主要功能如下:
传输连接管理:提供建立、维护和拆除传输连接的功能。传输层在网络层的基础上为高层提供“面向连接”和“面向无接连”的两种服务。
处理传输差错:提供可靠的“面向连接”和不太可靠的“面向无连接”的数据传输服务、差错控制和流量控制。在提供“面向连接”服务时,通过这一层传输的数据将由目标设备确认,如果在指定的时间内未收到确认信息,数据将被重发。

监控服务质量。

【会话层】
会话层(Session Layer)是OSI模型的第5层,是用户应用程序和网络之间的接口,主要任务是:向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层的连接称为会话。因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理。
用户可以按照半双工、单工和全双工的方式建立会话。当建立会话时,用户必须提供他们想要连接的远程地址。而这些地址与MAC(介质访问控制子层)地址或网络层的逻辑地址不同,它们是为用户专门设计的,更便于用户记忆。域名(DN)就是一种网络上使用的远程地址例如:www.3721.com就是一个域名。会话层的具体功能如下:
会话管理:允许用户在两个实体设备之间建立、维持和终止会话,并支持它们之间的数据交换。例如提供单方向会话或双向同时会话,并管理会话中的发送顺序,以及会话所占用时间的长短。
会话流量控制:提供会话流量控制和交叉会话功能。
寻址:使用远程地址建立会话连接。l
出错控制:从逻辑上讲会话层主要负责数据交换的建立、保持和终止,但实际的工作却是接收来自传输层的数据,并负责纠正错误。会话控制和远程过程调用均属于这一层的功能。但应注意,此层检查的错误不是通信介质的错误,而是磁盘空间、打印机缺纸等类型的高级错误。

【表示层】
表示层(Presentation Layer)是OSI模型的第六层,它对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。其主要功能是“处理用户信息的表示问题,如编码、数据格式转换和加密解密”等。表示层的具体功能如下:
数据格式处理:协商和建立数据交换的格式,解决各应用程序之间在数据格式表示上的差异。
数据的编码:处理字符集和数字的转换。例如由于用户程序中的数据类型(整型或实型、有符号或无符号等)、用户标识等都可以有不同的表示方式,因此,在设备之间需要具有在不同字符集或格式之间转换的功能。
压缩和解压缩:为了减少数据的传输量,这一层还负责数据的压缩与恢复。
数据的加密和解密:可以提高网络的安全性。

【应用层】
应用层(Application Layer)是OSI参考模型的最高层,它是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。此外,该层还负责协调各个应用程序间的工作。
应用层为用户提供的服务和协议有:文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务、安全服务、网络管理服务、数据库服务等。上述的各种网络服务由该层的不同应用协议和程序完成,不同的网络操作系统之间在功能、界面、实现技术、对硬件的支持、安全可靠性以及具有的各种应用程序接口等各个方面的差异是很大的。应用层的主要功能如下:
用户接口:应用层是用户与网络,以及应用程序与网络间的直接接口,使得用户能够与网络进行交互式联系。
实现各种服务:该层具有的各种应用程序可以完成和实现用户请求的各种服务。

49. SSL层原理?

 正确回答通过率:95.0%

[ 详情 ] 推荐指数: ★★ 试题难度: 初级

SSL利用数据加密、身份验证和消息完整性验证机制,为网络上数据的传输提供安全性保证。SSL支持各种应用层协议。由于SSL位于应用层和传输层之间,所以可以为任何基于TCP等可靠连接的应用层协议提供安全性保证。

1.身份验证机制
SSL利用数字签名来验证通信对端的身份。非对称密钥算法可以用来实现数字签名。由于通过私钥加密后的数据只能利用对应的公钥进行解密,因此根据解密是否成功,就可以判断发送者的身份,如同发送者对数据进行了“签名”。例如,Alice使用自己的私钥对一段固定的信息加密后发给Bob,Bob利用Alice的公钥解密,如果解密结果与固定信息相同,那么就能够确认信息的发送者为Alice,这个过程就称为数字签名。使用数字签名验证身份时,需要确保被验证者的公钥是真实的,否则,非法用户可能会冒充被验证者与验证者通信。如下图所示,Cindy冒充Bob,将自己的公钥发给Alice,并利用自己的私钥计算出签名发送给Alice,Alice利用“Bob”的公钥(实际上为Cindy的公钥)成功验证该签名,则Alice认为Bob的身份验证成功,而实际上与Alice通信的是冒充Bob的Cindy。SSL利用PKI提供的机制保证公钥的真实性。

2.数据传输的机密性
SSL加密通道上的数据加解密使用对称密钥算法,目前主要支持的算法有DES、3DES、AES等,这些算法都可以有效地防止交互数据被破解。对称密钥算法要求解密密钥和加密密钥完全一致。因此,利用对称密钥算法加密传输数据之前,需要在通信两端部署相同的密钥。

  1. 消息完整性验证
    为了避免网络中传输的数据被非法篡改,SSL利用基于MD5或SHA的MAC算法来保证消息的完整性。MAC算法是在密钥参与下的数据摘要算法,能将密钥和任意长度的数据转换为固定长度的数据。利用MAC算法验证消息完整性的过程如下图所示。发送者在密钥的参与下,利用MAC算法计算出消息的MAC值,并将其加在消息之后发送给接收者。接收者利用同样的密钥和MAC算法计算出消息的MAC值,并与接收到的MAC值比较。如果二者相同,则报文没有改变;否则,报文在传输过程中被修改,接收者将丢弃该报文。

MAC算法要求通信双方具有相同的密钥,否则MAC值验证将会失败。因此,利用MAC算法验证消息完整性之前,需要在通信两端部署相同的密钥。

4.利用非对称密钥算法保证密钥本身的安全
对称密钥算法和MAC算法要求通信双方具有相同的密钥,否则解密或MAC值验证将失败。因此,要建立加密通道或验证消息完整性,必须先在通信双方部署一致的密钥。SSL利用非对称密钥算法加密密钥的方法实现密钥交换,保证第三方无法获取该密钥。如下图所示,SSL客户端(如Web浏览器)利用SSL服务器(如Web服务器)的公钥加密密钥,将加密后的密钥发送给SSL服务器,只有拥有对应私钥的SSL服务器才能从密文中获取原始的密钥。SSL通常采用RSA算法加密传输密钥。(Server端公钥加密密钥,私钥解密密钥)

实际上,SSL客户端发送给SSL服务器的密钥不能直接用来加密数据或计算MAC值,该密钥是用来计算对称密钥和MAC密钥的信息,称为premaster secret。SSL客户端和SSL服务器利用premaster secret计算出相同的主密钥(master secret),再利用master secret生成用于对称密钥算法、MAC算法等的密钥。premaster secret是计算对称密钥、MAC算法密钥的关键。

5.利用PKI保证公钥的真实性
PKI通过数字证书来发布用户的公钥,并提供了验证公钥真实性的机制。数字证书(简称证书)是一个包含用户的公钥及其身份信息的文件,证明了用户与公钥的关联。数字证书由权威机构——CA签发,并由CA保证数字证书的真实性。

SSL客户端把密钥加密传递给SSL服务器之前,SSL服务器需要将从CA获取的证书发送给SSL客户端,SSL客户端通过PKI判断该证书的真实性。如果该证书确实属于SSL服务器,则利用该证书中的公钥加密密钥,发送给SSL服务器。
验证SSL服务器/SSL客户端的身份之前,SSL服务器/SSL客户端需要将从CA获取的证书发送给对端,对端通过PKI判断该证书的真实性。如果该证书确实属于SSL服务器/SSL客户端,则对端利用该证书中的公钥验证SSL服务器/SSL客户端的身份。

50. HTTP常见头格式 ?

  正确回答通过率:71.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 中级

1、Accept:text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, image/apng, /; q=0.8
作用:向服务器申明客户端(浏览器)可以接受的媒体类型(MIME)的资源
解释:浏览器可以接受text/html、application/xhtml+xml、application/xml类型,通配符*/* 表示任意类型的数据。并且浏览器按照该顺序进行接收。( text/html —> application/xhtml+xml —> application/xml)
2、Accept-encoding: gzip, deflate, br
作用:向服务器申明客户端(浏览器)接收的编码方法,通常为压缩方法
解释:浏览器支持采用经过gzip,deflate 或 br 压缩过的资源

3、Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7
作用:向服务器申明客户端(浏览器)接收的语言
解释:浏览器能够接受en-US, en 和 zh-CN 三种语言,其中 en-US 的权重最高 ( q 最高为1,最低为 0),服务器优先返回 en-US 语言
延伸:语言与字符集的区别:zh-CN 为汉语,汉语中有许多的编码:gbk2312 等

4、Cache-control: max-age=0
作用:控制浏览器的缓存,常见值为private、no-cache、max-age、alidate,默认为 private,根据浏览器查看页面不同的方式来进行区别
解释:浏览器在访问了该页面后,不再会访问服务器

5、Cookie:
作用:告诉服务器关于Session 的信息,存储让服务器辨识用户身份的信息。
6、Refer:https://www.baidu.com/xxxxxxxxxx
作用:告诉服务器该页面从哪个页面链接的
解释:该页面从https://www.baidu.com 中的搜索结果中点击过来的
7、Upgrade-insecure-requests:1
作用:申明浏览器支持从http 请求自动升级为 https 请求,并且在以后发送请求的时候都使用 https
解释:当页面中包含大量的http 资源的时候(图片、iframe),如果服务器发现一旦存在上述的响应头的时候,会在加载 http 资源的时候自动替换为 https 请求
8、User-agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
作用:向服务器发送浏览器的版本、系统、应用程序的信息。
解释:Chrome 浏览器的版本信息为 63.0.3239.132,并将自己伪装成 Safari,使用的是 WebKit 引擎,WebKit伪装成 KHTML,KHTML伪装成Gecko(伪装是为了接收那些为Mozilla、safari、gecko编写的界面)
延伸:可以随便填(但不应该随便填)不过一般用于统计。

9、X-Chrome-UMA-Enabled、X-Client-Data :与 Chrome 浏览器相关的数据Response Headers

51. TCP/IP四层网络协议?

 正确回答通过率:66.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 中级

TCP/IP四层网络协议分别是应用层,网络层,传输层,数据链路层

52. Session概念和理解 ?

  正确回答通过率:56.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 中级

Session:在web开发中,服务器可以为每个用户创建一个会话对象(session对象),默认情况下一个浏览器独占一个session对象,因此在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其他程序时,其他程序可以从用户的session中取出该用户的数据,为用户服务,其实现原理是服务器创建session出来后,会把session的id号,以cookie的形式回写给客户机,这样只要客户机的浏览器不关,再去访问服务器时,都会带着session的id号去,服务器发现客户机浏览器带session id过来了,就会使用内存中与之对应的session服务。
Session和cookie的区别:
1、cookie是把用户的数据写给用户浏览器
2、session是把用户的数据写到用户独占的session中
3、session对象由服务器创建,开发人员可以调用request对象的getsession方法得到session对象

53. 跨域的原理和实现方案 ?

 正确回答通过率:74.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 初级

浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域
跨域的几种方案:
1:基于script标签实现跨域
3: 基于jquery跨域
4: 通过iframe来跨子域

54. 解释什么是数据库事务?

 正确回答通过率:72.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 中级

数据库事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。一个数据库事务通常包含了一个序列的对数据库的读/写操作。它的存在包含有以下两个目的:
1.为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。
2.当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。

当事务被提交给了DBMS(数据库管理系统),则DBMS(数据库管理系统)需要确保该事务中的所有操作都成功完成且其结果被永久保存在数据库中,如果事务中有的操作没有成功完成,则事务中的所有操作都需要被回滚,回到事务执行前的状态;同时,该事务对数据库或者其他事务的执行无影响,所有的事务都好像在独立的运行。

数据库事务拥有以下四个特性,被称之为ACID特性:
原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。
一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。
隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中。

55. Redis的理解和实践?

 正确回答通过率:80.0%

[ 详情 ] 推荐指数: ★★★★★ 试题难度: 中级

Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

56. 基本的基本的SQL语句汇总 ?

  正确回答通过率:74.0%

[ 详情 ] 推荐指数: ★★★★★ 试题难度: 中级

选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ‘%value1%’ —like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [desc]
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1

57. 数据库统计总成绩取前十名的学生?

 正确回答通过率:74.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 初级

SELECT * FROM (
select T.*,ROW_NUMBER()OVER(PARTITION BY 班级 order by 成绩 desc) RN
FROM T
)WHERE RN<=10

58. Mysql中用户密码丢了怎么办,建一个数据库表,授权命令是什么?

 正确回答通过率:78.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 初级

对于普通用户的密码丢失,直接用root超级管理员登录修改密码即可
若是root密码丢失,可通过mysqlld_saft方式找回
1、停止mysql:service mysqld stop
2、安全模式启动:mysql_safe-skip-grant-tables&
3、无密码回车键登录:mysql –uroot –p;
4、重置密码:use mysql update user set password=password(“)where user=’root’ and host=’localhost’;flush privileges
5、正常启动:service mysql restart
6、再使用mysqladmin:mysqladmin password ‘123456’

Mysql创建数据库
Create database demodb default character set utf8 collate utf8_general_ci;
授权
Grant all privileges on demodb. * [用户名称]@’%’
立即启动修改
Flush privileges

59. 数据库中的聚类查询?

 正确回答通过率:53.0%

[ 详情 ] 推荐指数: ★★ 试题难度: 高难

聚集索引中键值的逻辑顺序决定了表中相应行的物理顺序。聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。例如,如果应用程序执行的一个查询经常检索某一日期范围内的记录,则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直到到达结束日期。这样有助于提高此类查询的性能。同样,如果对从表中检索的数据进行排序时经常要用到某一列,则可以将该表在该列上聚集(物理排序),避免每次查询该列时都进行排序,从而节省成本。当索引值唯一时,使用聚集索引查找特定的行也很有效率。例如,使用唯一雇员ID 列 emp_id 查找特定雇员的最快速的方法,是在 emp_id 列上创建聚集索引或 PRIMARY KEY 约束。
如果不创建索引,系统会自动创建一个隐含列作为表的聚集索引。

1.创建表的时候指定主键(注意:SQL Sever默认主键为聚集索引,也可以指定为非聚集索引,而MySQL里主键就是聚集索引)
create table t1(
id int primary key,
name nvarchar(255)
)
2.创建表后添加聚集索引
SQL Server:
create clustered index clustered_index on table_name(colum_name)
MySQL:
alter table table_name add primary key(colum_name)

60. 数据库事务、主键与外键的区别?

  正确回答通过率:74.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 初级

数据库的事务:事务即用户定义的一个数据库操作序列,这些操作要么全做要全不做,是一个不可分割的工作单位,它具有四个特性,ACID,原子性,一致性,隔离性,持续性
主键和外键的区别:
1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。
身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
2.外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。

61. 数据库count和sum的区别,以及count(*)和count(列名)的区别?

 正确回答通过率:77.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 中级

Count和sum区别:求和用累加sum(),求行的个数用累计count
Count(*)包括了所有的列,在统计结果的时候不会忽略列值为null
Count(列名)只包括列名那一项,会忽略列值为空的计数

62. 进程和线程的区别?

 正确回答通过率:86.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 初级

进程:是具有一定独立功能的程序、它是系统进行资源分配和调度的一个独立单位,重点在系统调度和单独的单位,也就是说进程是可以独立运行的一段程序。
线程:是进程的一个实体,是CPU调度和分派的基本单位,比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,在运行时,只是暂用一些计数器、寄存器和栈 。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间。
一个程序至少有一个进程,一个进程至少有一个线程。

63. 如何对数据库作优化?

 正确回答通过率:56.0%

[ 详情 ] 推荐指数: ★★★★★ 试题难度: 高难

1、调整数据结构的设计,对于经常访问的数据库表建立索引
2、调整SQL语句, ORACLE公司推荐使用ORACLE语句优化器(Oracle Optimizer)和行锁管理器(row-level manager)来调整优化SQL语句。
3、调整服务器内存分配。内存分配是在信息系统运行过程中优化配置的,数据库管理员可以根据数据库运行状况调整数据库系统全局区(SGA区)的数据缓冲区、日志缓冲区和共享池的大小;还可以调整程序全局区(PGA区)的大小。
4、调整硬盘I/O,DBA可以将组成同一个表空间的数据文件放在不同的硬盘上,做到硬盘之间I/O负载均衡。

64. 虚拟内存的概念 ?

 正确回答通过率:72.0%

[ 详情 ] 推荐指数: ★★ 试题难度: 初级

虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换

65. 多进程、多线程,操作系统层面的差别和联系?

 正确回答通过率:41.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 高难

进程:进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。进程一般由程序、数据集合和进程控制块三部分组成。程序用于描述进程要完成的功能,是控制进程执行的指令集;数据集合是程序在执行时所需要的数据和工作区;程序控制块(Program Control Block,简称PCB),包含进程的描述信息和控制信息,是进程存在的唯一标志。
线程:在早期的操作系统中并没有线程的概念,进程是能拥有资源和独立运行的最小单位,也是程序执行的最小单位。任务调度采用的是时间片轮转的抢占式调度方式,而进程是任务调度的最小单位,每个进程有各自独立的一块内存,使得各个进程之间内存地址相互隔离。后来,随着计算机的发展,对CPU的要求越来越高,进程之间的切换开销较大,已经无法满足越来越复杂的程序的要求了。于是就发明了线程,线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。一个进程可以有一个或多个线程,各个线程之间共享程序的内存空间(也就是所在进程的内存空间)。一个标准的线程由线程ID、当前指令指针(PC)、寄存器和堆栈组成。而进程由内存空间(代码、数据、进程空间、打开的文件)和一个或多个线程组成。

差别:1.线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;2.一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;3.进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见;4.调度和切换:线程上下文切换比进程上下文切换要快得多。

联系:原则上一个CPU只能分配给一个进程,以便运行这个进程。通常使用的计算机中只有一个CPU,同时运行多个进程,就必须使用并发技术。通常采用时间片轮转进程调度算法,在操作系统的管理下,所有正在运行的进程轮流使用CPU,每个进程允许占用CPU的时间非常短(比如10毫秒),这样用户根本感觉不出来CPU是在轮流为多个进程服务,就好象所有的进程都在不间断地运行一样。但实际上在任何一个时间内有且仅有一个进程占有CPU。如果一台计算机有多个CPU,情况就不同了,如果进程数小于CPU数,则不同的进程可以分配给不同的CPU来运行,这样,多个进程就是真正同时运行的,这便是并行。但如果进程数大于CPU数,则仍然需要使用并发技术。在Windows中,进行CPU分配是以线程为单位的,一个进程可能由多个线程组成。操作系统将CPU的时间片分配给多个线程,每个线程在操作系统指定的时间片内完成(注意,这里的多个线程是分属于不同进程的).操作系统不断的从一个线程的执行切换到另一个线程的执行,如此往复,宏观上看来,就好像是多个线程在一起执行.由于这多个线程分属于不同的进程,就好像是多个进程在同时执行,这样就实现了多任务。总线程数<=CPU数量时并行运行,总线程数>CPU数量时并发运行。并行运行的效率显然高于并发运行,所以在多CPU的计算机中,多任务的效率比较高。但是,如果在多CPU计算机中只运行一个进程(线程),就不能发挥多CPU的优势。

66. 线程的五种状态以及转换?

  正确回答通过率:35.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 高难

1、新生状态
在程序中用构造方法(new操作符)创建一个新线程时,如new Thread®,该线程就是创建状态,此时它已经有了相应的内存空间和其它资源,但是还没有开始执行。

2、就绪状态
新建线程对象后,调用该线程的start()方法就可以启动线程。当线程启动时,线程进入就绪状态(runnable)。由于还没有分配CPU,线程将进入线程队列排队,等待 CPU 服务,这表明它已经具备了运行条件。当系统挑选一个等待执行的Thread对象后,它就会从等待执行状态进入执行状态。系统挑选的动作称之为“CPU调度"。一旦获得CPU线程就进入运行状态并自动调用自己的run方法。

3、运行状态
当就绪状态的线程被调用并获得处理器资源时,线程就进入了运行状态。此时,自动调用该线程对象的run()方法。run()方法定义了该线程的操作和功能。运行状态中的线程执行自己的run方法中代码。直到调用其他方法或者发生阻塞而终止。

4、阻塞状态
一个正在执行的线程在某些特殊情况下,如被人为挂起或需要执行耗时的输入输出操作时,suspend()、 wait()等方法,线程都将进入堵塞状态。堵塞时,线程不能进入排队队列,只有当引起堵塞的原因被消除后,线程转入就绪状态。重将让出 CPU 并暂时中止自己的执行,进入堵塞状态。在可执行状态下,如果调用 sleep()、 新到就绪队列中排队等待,这时被CPU调度选中后会从原来停止的位置开始继续执行。

5、死亡状态
线程调用stop()方法、destory()方法或 run()方法执行结束后,线程即处于死亡状态。处于死亡状态的线程不具有继续运行的能力。

67. 简述什么是数据库幻读?

 正确回答通过率:94.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 初级

幻读就是指当一个事务正在访问数据,并且对数据进行了修改,但是还没有来得及提交到数据库中,这时,另一个事务也访问这个数据,然后使用了这个数据

68. URL的概念与组成?

 正确回答通过率:81.0%

[ 详情 ] 推荐指数: ★★ 试题难度: 初级

URL由三部分组成:
资源类型、存放资源的主机域名、资源文件名
也可认为由4部分组成:
协议、主机、端口、路径。(很多时候端口都是隐藏的)
还可以认为由7部分组成:
协议,域名,端口,虚拟目录,文件名,锚,参数
URL的一般语法格式:
(带方括号[]的为可选项)
protocol 😕/ hostname[:port] / path / [;parameters][?query]#fragment

69. 阐述有哪些常见加密算法?

 正确回答通过率:89.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 初级

摘要算法(MD5.SHA1 ):造接口数据前调用MD5,SHA1进行编码,服务端对比编码后的字符串是否一致。
对称加密算法(AES,DES ):造接口数据前从开发获取对称公钥,基于对称公钥可以加密请求数据,解密响应报文。
非对称加密算法(RSA):造接口数据前从开发获取公钥私钥去加密解密接口数据

70. 简述什么是数据驱动?

 正确回答通过率:89.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 初级

数据驱动就是通过excel,或者xml,数据库等数据结构来维护测试数据,通过相应的技术去处理,拿到测试数据用于测试,从而实现测试数据与代码的解耦,数据驱动测试的本质是高级的参数化。
将测试用例放在excel中,使用数据驱动(如ddt)遍历每一条用例, 然后传递给被装饰的方法的一个参数,有几条数据 就执行几次用例。

71. 简述什么是Token?

 正确回答通过率:89.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 初级

所谓token其实就是服务器端返回的一个字符串(有点类似于:xys73494954sdhcdr83435这么一串),这个数据是基于什么算法生成的需要找开发确认,一般这个数据是唯一的,服务器每次返回的token都会不一样。Token之所以可以用来做鉴权,原理如下:用户a调用了登录接口–》登录了系统b–》服务器端生成了一个唯一的token信息(假设为c),然后会拿用户的编号id(假设为d)做了一个映射:c-d,然后将这样的映射关系存到数据库或redis等缓存中,然后再返回这个token给客户端–》客户端再调用其他需要鉴权的接口时,只需要将缓存起来的这个token带过去验证–》服务器根据此token检查是否有登录用户信息来判断此请求是否是一个已登录授权的用户。

72. 关系型数据库和非关系型数据库的区别?

 正确回答通过率:81.0%

[ 详情 ] 推荐指数: ★★ 试题难度: 初级

关系型数据库最典型的数据结构是表。由二维表及其之间的数据联系所组成的数据组织。
优点:
1.易于维护:格式一致,都是使用表结构。
2.使用方便:SQL语言通用。
3.能完成一些复杂操作:支持SQL,可用于一个表及多个表之间非常复杂的查询。

缺点:
1.读写性能较差。
2.固定的表结构,灵活性欠缺。
3.高并发读写需求,是很大的瓶颈。

非关系型数据库严格意义上不是一种数据库,应该是一种数据格式化储存的集合,可以是文档或者键值对形式。
优点:
1.格式灵活
2.速度快:可以使用硬盘或者随机储存器作为载体,而关系型数据库只能使用硬盘。
3.高拓展性。
4.成本低,部署简单。

缺点:
1.不提供SQL支持,学习和使用的成本比较高。
2.无事务处理。
3.数据结构相对复杂,复杂查询方面稍微欠缺。

73. 在数据库中查询语句速度很慢,如何优化?

 正确回答通过率:56.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 高难

① 建立索引
② 减少表之间的关联
③ 优化sql语句,尽量让sql很快定位数据,不要让sql做全表查询,应该走索引,把数据量大的排在前面
④ 简化查询字段,没用的字段不要
⑤ 尽量用PreparedStatement来查询,不要用Statement

74. 数据库中order by和group by的区别?

 正确回答通过率:95.0%

[ 详情 ] 推荐指数: ★★ 试题难度: 初级

order by为排序查询、
ASC升序 DESC降序
group by为分组查询、
having只能用于group by子句、作用于组内、
having条件子句的查询语句需要使用聚合函数

75. 关系数据库中主键和外键的区别?

 正确回答通过率:78.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 初级

主键在本表中是唯一的,不可为空的,外键可以重复可以为空。
外键和另一张表的主键关联,不能创建对应表中不存在的外键。

76. SQL的表连接方式有哪些?

 正确回答通过率:78.0%

[ 详情 ] 推荐指数: ★★ 试题难度: 初级

内连接、外连接、交叉连接
内连接:inner join in ,两表都满足的组合
外连接:分为左连接、右连接、全连接
左连接 A left(outer) join B
以A表为基础,A表的全部数据,B表有的组合,没有的为null
右连接 A right(outer) join B
以B表为基础,B表的全部数据,A表有的组合,没有的为null
全连接 A full(outer) join
两表相同的组合在一起,A表有,B表没有的数据(显示为null),同样B表有,A表没有的显示为null
交叉连接:cross join,即使笛卡尔乘积

77. Oracle和MySQL的区别?

 正确回答通过率:76.0%

[ 详情 ] 推荐指数: ★★★ 试题难度: 初级

① 库函数不同
② oracle是用表空间来管理的,mysql不是
③ 显示当前所有的表、用户、改变连接用户、显示当前连接用户、执行外部脚本的语句的不同
④ 分页查询时,mysql用limit ;oracle用rownum

78. 关系数据库中truncate和delete的区别?

  正确回答通过率:73.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 初级

相同处:二者均删除表中的全部行
不同处:
① truncate table比delete速度快
② delete语句每次删除一行,并在事务日志中为所删除的每行记录一项;truncate通过释放存储数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
③ truncate table删除内容,释放空间但不删除定义
④ delete table删除内容,不删除定义但不释放空间
⑤ drop table删除内容和定义,释放空间

79. 数据库中存储过程与函数的区别?

 正确回答通过率:84.0%

[ 详情 ] 推荐指数: ★★ 试题难度: 初级

① 函数有返回值,存储过程没有返回值
② 因为存储过程没有返回值,所以不能将存储过程的执行结果赋值给变量;函数有返回值类型,调用函数时,可以将函数的执行结果赋值给变量。

80. 什么是数据库约束,常见的约束有哪几种?

 正确回答通过率:82.0%

[ 详情 ] 推荐指数: ★★★★ 试题难度: 初级

约束可以分为:
主键约束primary key、
外键约束foreign key、
唯一约束unique、
检查约束check、
空值约束not null、
默认值约束default

81. 常见的content-type ?

  正确回答通过率:70.0%

[ 详情 ] 推荐指数: ★★★★★ 试题难度: 初级

文本格式:text/html:HTML格式
text/plain:纯文本格式
text/xml:XML格式
图片格式:
image/gif:gif格式
image/jpeg:jpg格式
image/png:png图片格式
应用:
application/xhtml+xml:XHTML格式
application/xml:XML格式
application/atom+xml:Atom XML聚合格式
application/json:JSON格式
application/pdf:pdf格式
application/msword:word文档格式
application/octet-stream:二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded Form中默认的encType,from表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我思故我在7896

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值