前言:答案有些是我自己写的,仅供参考
SQL
第一题:检索可用的数据库、检索表的列表、检索一个数据列
show databases;
show tables;
select 列名 from 表名;
第二题:增删改查
insert into 表 (列) value();
delete from 表 where;
update 表 set where;
select 列 from 表 where;
第三题:从表prod中检索列id,price,name,并且先按price,再按name排序。
select id, price, name from prod order by price, name;
第四题:外部联结,left outer join 和 right outer join的区别
除了展示匹配的行,还会展示左(右)边表中不匹配的行,也就是展示左边所有行还是右边所有行。
第五题:下面命令中int(3)、varchar(6)分别表示什么意思
create table stu (id int(3) not null, name varchar(6) not null);
这里很容易搞错。
varchar(6)表示,name的数据类型是varchar类型,长度可变,但是最多不超过6个字符,name超过6个字符会报错;
int(3)表示,id的数据类型是int,3和存储空间并没有关系,int,int(3),int(4)都是占用4B的存储空间。
int(3)表示最大显示宽度是3,超过最大显示宽度时,如1234,正常保存,没超过最大显示宽度时,如12,前面补空格。设置了zerofill参数时,前面补0。
第六题:表customers,存储用户信息,如用户id,用户姓名等,主键cust_id;
±--------±---------------+
| cust_id | cust_name |
±--------±---------------+
| 10001 | Coyote Inc. |
| 10002 | Mouse House |
| 10003 | Wascals |
| 10004 | Yosemite Place |
| 10005 | E Fudd |
±--------±---------------+
表orders,存储订单信息,如订单号,用户id等,主键order_num,外键cust_id。
±----------±--------+
| order_num | cust_id |
±----------±--------+
| 20005 | 10001 |
| 20009 | 10001 |
| 20006 | 10003 |
| 20007 | 10004 |
| 20008 | 10005 |
±----------±--------+
问:检索出所有用户,及每个用户所下的订单数(包括没有下过订单的用户),写出sql语句
答:
select customers.cust_id, customers.cust_name, count(orders.order_num)
from customers left outer join orders
on customers.cust_id=orders.cust_id
group by customers.cust_id;
事务处理
事务处理用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
事务的四个特征:
原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则。
隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
LINUX
1.Linux是什么
操作系统与硬件交互,控制硬件资源,并且提供系统调用接口给应用程序使用。Linux是一套操作系统。
2.文件权限的含义,如"-rw-r–r–"
第一个字符表示:文件类型,d是目录,-是文件,l是连接文件等;
后面三个字符为一组,分别表示,文件所有者权限,文件所属用户权限,其它人的权限(非用户组),每一组中,rwx-分别表示可读,可写,可执行,无权限。
3.改变文件权限的命令
chmod 777 文件名
chmod u=rwx, g=rwx, o=rwx 文件名
4.绝对路径和相对路径的区别
绝对路径:路径写法由根目录/写起,如:cd /Users/wfy/desktop
相对路径:不是由/写起,例如目前在/Users/wfy下,可以写cd ./desktop
5.目录相关常见命令
cd:切换到目录
pwd:显示当前目录
mkdir:新建新的目录
6.选取命令,grep
grep ‘字符串’ filename
7.下面的命令表示什么意思:
grep ‘[^0-9]’ test.txt
答:不是“从文件test.txt中选出不带数字的行”,而是“会输出文件test.txt所有的行,这条命令并不能过滤出什么行”
8.vim的使用
几种模式:一般模式,编辑模式,命令行模式
模式间切换,i, o, a, esc, :, /, ?
退出::q
保存退出::wq
移动到第n行:nG
复制,粘贴:y, p
9.复制重命名删除
cp, mv, rm
计算机网络
1.计算机网路的协议体系结构,由哪几部分组成?
七层:应用层,表示层,会话层,运输层,网络层,数据链路层,物理层
五层:应用层,运输层,网络层,数据链路层,物理层
四层:应用层,运输层,网际层IP,网络接口层
应用层:通过应用进程间的交互,完成特定的网络应用,应用层协议由HTTP协议,FTP协议等
运输层:负责向两个主机充进程之间的通信提供通用的数据传输服务,运输层协议-TCP协议,UDP协议
网络层:为交换网上不同主机提供通信服务,路由选择,网络层协议-IP协议
数据链路层:层用户提供透明的和可靠的数据传送基本服务,将网络层的IP数据组装成帧,在两个相邻节点上传送帧。
物理层:确保原始的数据可在各种物理媒体上传输
2.IP地址与硬件地址的区别
IP地址是网络层和以上各层使用的地址,是一种逻辑地址
硬件地址是链路层和物理层使用的地址
IP地址是居住地,硬件地址是身份证号。
3.地址解析协议作用
IP地址到硬件地址的映射。
4.TCP连接建立的过程(三次握手)
1.客户端向服务端发送连接请求报文段
2.服务器收到连接请求报文段,如果同意,向客户端发送确认报文段
3.客户端受到服务端的确认后,再次向服务端发送确认报文段
已建立连接状态
5.简要域名解析的过程
1.主机提出域名解析请求,发送给本地域名服务器
2.本地域名服务器进行查询,缓存中有记录,本地域名服务器就把结果返回
3.如果没查到,本地域名服务器把请求发给根域名服务器
4.跟域名服务器返回结果,或者下一个应查询的域名服务器地址
5.本地域名服务器把查询结果告诉主机
6.死锁产生的主要原因
1.系统资源不足
2.进程顺序不合适
3.资源分配不当
7.死锁的四个必要条件
1.互斥条件:一个资源每次只能被一个进程使用
2.请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放
3.不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺
4.循环等待条件:若干进程间,形成一种头尾相接的循环等待资源关系
HTTP协议
1.HTTP协议请求报文和响应报文,分别由哪些部分组成?
请求报文:请求行 + 首部+实体(方法+URI+版本+首部字段+主体)
响应报文:状态行 + 首部+实体(版本+状态码+原因短语+首部字段+主体)
2.URL的组成部分
URL:“方案://服务器位置/路径”
URL通用格式:?/:@:/
方案:获取资源时使用哪种协议
用户:某些方案访问资源时需要用户名
密码:用户名后可能需要的密码,中间用冒号(:)分割
主机:主机名
端口:服务器正在监听的端口号
路径:服务器上资源的本地名,由斜杠(/)与前面组件分隔开,路径的语法与服务器和方案有关。每段路径都可以有自己的参数。
参数:某些方案会用这个组件来指定输入参数,URL可以包含多个参数,参数间以及与其余组件间用分号(;)分割
查询:某些方案用这个组件传递参数以激活应用程序,查询组件没有通用格式,用问号(?)与其他组件分割,查询组件间用(&)分割
片段:一小片或一部分资源的名字,客户端使用
3.状态码
200 :请求成功
301 :永久重定向
302 :临时重定向
404 :资源未找到,在指定的位置不存在所申请的资源
500 :服务器故障
4.GET方法与POST方法的区别
区别一:
get重点在从服务器上获取资源,post重点在向服务器发送数据;
区别二:
get传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用"?“连接,多个请求数据间用”&"连接,如http://127.0.0.1/Test/login.action?name=admin&password=admin,这个过程用户是可见的;
post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的;
区别三:
Get传输的数据量小,因为受URL长度限制,但效率较高;
Post可以传输大量数据,所以上传文件时只能用Post方式;
区别四:
get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;
post较get安全性较高;
区别五:
get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。
post支持标准字符集,可以正确传递中文字符。
数据结构
1.数组和链表区别
数组静态分配内存,链表动态分配内存
数组在内存中是顺序存储的,链表不是
数组元素在栈中,链表元素在堆中
数组插入元素的时间复杂度高,链表定位元素的时间复杂度高
2.广度优先遍历和深度优先遍历
深度优先遍历某个顶点出发,首先访问这个顶点,然后找出刚访问这个节点的第一个未被访问的邻结点,然后再以此邻结点为顶点,继续找它的下一个新的顶点进行访问,重复此步骤,直到所有结点都被访问完为止。
广度优先遍历从某个顶点出发,首先访问这个顶点,然后找出这个结点的所有未被访问的邻接点,访问完后再访问这些结点中第一个邻接点的所有结点,重复此方法,直到所有结点都被访问完为止。
JAVA
1.JAVA八种基本数据类型
byte
short
int
long
float
double
boolean
char
2.构造方法的作用
初始化对象
3.静态方法能不能实例方法,为什么
不能
静态方法并不属于特定的对象。
Circle c1 = new Circle(3);
Circle c2 = new Circle(4);
int n = 3;
foo(c1, c2, n);
public static void foo(Circle circle1, Circle circle2, int i) {
circle1.setRadius(30.0);
Circle temp = new Circle(40.0);
circle2 = temp;
i = 4;
}
执行完foo(c1, c2, n)后,c1.getRadius(),c2.getRadius(),n的值分别是多少,为什么?
30.0、4.0、3
值传递,值本身不会变,值指向的对象可以变。
5.面向对象语言的特点
封装、继承、多态
6.解释下封装,继承和多态
把类的数据域设为私有,用户只能通过set和get方法操作数据域;隐藏方法的实现细节,用户调用方法,并不知道方法内部是如何实现的。
类可以扩充为更特定的类,子类从父类中继承可访问的数据和方法,也可以有自己的数据和方法。
使用父类对象的地方都可以使用子类对象。
7.方法重载和重写的区别
重载是用一个方法名定义多个方法;重写是子类对父类方法进行新的实现
重载方法名相同,形参表不同;重写返回类型,方法名,形参表都要相同
8.解释下构造方法链
构造方法在执行自己任务前,会先调用父类的构造方法,父类构造方法执行自己任务前,先调用自己的父类构造方法,直到结束,称为构造方法链
9.解释下装箱和拆箱
装箱:把基本类型值转换为包装类对象
拆箱:把包装类对象转换成基本类型值