第二十六套(三)

来源:互联网 发布:阿里云短信发送jar 编辑:程序博客网 时间:2024/04/27 20:07

数据库部分


1.简述mysql 中 MyISAM和Innodb这2种不同类型的数据类型的优缺点。

              MyISAM          InnoDB 事务          不支持             支持 数据行锁定    不支持,只有表锁定   支持 外键约束      不支持             支持 表空间大小    相对小             相对大,最大是2倍 全文索引      支持              不支持 GIS数据      支持               不支持 COUNT问题     无               执行COUNT(*)查询时,速度慢

2.已知表:member,内含100万条数据,

字段:id,username(用户名),city(所在城市),gender(性别),birthday (生日)
a. 请写出一条sql 语句 , 从 member 表中检索出唯一的不重复记录
select distinct username from member;
b. 现发现 表尚未建立索引,其中sql 语句 中查询较多的是username , gender 字段 ,你会如何建索引,使得到最佳性能?
create index index_username on member(username);
create index index_gender on member(gender);
或者
create index index_u on member(username,gender);
c. 现有以下一条sql 语句
Select * from member where city = ‘guangzhou’ and birthdy=’2010-10-10’
在mysql中如何知道这条sql语句执行了多长时间, 这条sql 真正访问了哪些索引字段
查看时间方法一:直接看最下面的提示框;
查看时间方法二:declare @begin_date datetime
declare @end_date datetime
select @begin_date = getdate()
<这里写上你的语句…>
select @end_date = getdate()
select datediff(ms,@begin_date,@end_date) as ‘用时/毫秒’
安装plsql输入sql语句后按F5
SQL语句加explain

3.你用什么方法检查数据库SQL 的效率(通常是数据库query时间),并 定位 和分析脚本执行和数据库查询的瓶颈所在?

1.脚本执行时间,启用xdebug,使用WinCacheGrind分析。
2.数据库查询,mysql使用EXPLAIN分析查询,启用slow query log记录慢查询。
3, xdebug统计函数执行次数和具体时间进行分析。
4, 在线系统用strace跟踪相关进程的具体系统调用。

Web开发部分


4.抽象类和接口类有什么区别?

抽象类:
定义:在类中如果至少有一个方法,没有方法体,直接分号结束,那么这个方法叫做抽象方法,要加abstract修饰.
1.含有抽象方法的类肯定是抽象类,但是不是所有的抽象类都必须包含抽象方法.抽象类也要加abstract修饰.
2.不能实例化,也就是不能new成对象.
3.若想使用抽象类,就必须定义一个类去继承这个抽象类,并实现抽象方法(覆盖父类的抽象方法)
4.抽象类对于子类(实现类),有一定约束作用

接口:
定义:如果在一个抽象类中包含的只有抽象方法,可以将其定义为interface(接口),用implements关键字使用它
作用:为了解决面向对象编程语言不支持多重继承的问题.
1.当一个类在继承了一个接口后,它必须实现即覆盖该接口的所有方法才可以实例化使用,否则即为抽象类.

区别:
1.在定义上:抽象类表示该类中可能已经有一些方法的具体定义,接口就仅仅只能定义各个方法的界面,不能有具体的实现代码在成员方法中
2.在用法上:抽象类是子类用来继承的,当父类已有实际功能的方法时,该方法在子类中可以不必实现.实现一个接口,必须实现接口中所有的定义方法,不能遗漏任何一个

5.表单中get和post提交方法的区别?

1.GET提交数据会附在URL里,所以是明文传输,而POST是放置在HTTP包里,地址栏不会显示
2.GET传参会有大小的限制,因浏览器和操作系统的不同而不同。而POST传参理论上不受限,但是一般会认为设定。
3.POST安全性比GET高

6.HTTP 协议 中几个状态码的含义 : 503 500 401 200 301 302

200 客户端请求成功
301 请求的网页已永久移动到新位置
302 服务器目前从不同位置的网页响应请求
401 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
500 服务器发生不可预期的错误
503 服务器当前不能处理客户端的请求,一段时间后可能恢复正常

7.请写出HTTP头,并符合以下要求:

①这是一个post请求②目标: http://www.example.com:8080/test③POST 变量:                Username: test                Pwd:  test2                Intro: hello  world!④包含以下COOKIE信息:                Cur_query:you&me

说明:
1如果,你记不得某个HTTP协议中的指令字了,那么, 就用“汉字”代替
2如果,你能记住更多的HTTP协议指令字,那么多写几句,总是没坏处,对吧?
3 最关键的,只需要画出正确的“轮廓”(还记得httpwatch 等工具打印出来的头部吗?那就是“轮廓” 的含义),也会有分数,但如果,链“”都写错了,那么就很遗憾了。

host:http://www.example.com:8080/testcookie:Cur_query:you&mepost:Usernaem :test ;Pwd :test2 ;Intro :hello world !

8.对于大流量的网站,从软件结构上采用什么样的方法可以解决或缓解访问量问题?

首先:确认服务器的硬件是否足够支持当前的流量;
其次:优化数据库访问;
第三:禁止外部的盗链;
第四:控制大文件的下载;
第五:使用不同主机分流主要流量;
第六:使用流量分析软件进行分析和微调

Linux / unix 部分


9.如何查看当前登录用户的环境变量设置,请写出操作命令。

命令:cat /etc/profile
1.Linux的变量种类
按变量的生存周期来划分,Linux变量可分为两类:
1.1 永久的:需要修改配置文件,变量永久生效。
1.2 临时的:使用export命令声明即可,变量在关闭shell时失效。
2.设置变量的三种方法
2.1 在/etc/profile文件中添加变量【对所有用户生效(永久的)】
用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。
例如:编辑/etc/profile文件,添加CLASSPATH变量

# vi /etc/profile<br>export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

注:修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效。
2.2 在用户目录下的.bash_profile文件中增加变量【对单一用户生效(永久的)】
用VI在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。

例如:编辑guok用户目录(/home/guok)下的.bash_profile$ vi /home/guok/.bash.profile添加如下内容:export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib注:修改文件后要想马上生效还要运行$ source /home/guok/.bash_profile不然只能在下次重进此用户时生效。

2.3 直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】
在shell的命令行下直接使用[export 变量名=变量值] 定义变量,该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。

3.环境变量的查看
3.1 使用echo命令查看单个环境变量。
例如:echo $PATH
3.2 使用env查看所有环境变量。
例如:env
3.3 使用set查看所有本地定义的环境变量。
unset可以删除指定的环境变量。
4.常用的环境变量
PATH 决定了shell将到哪些目录中寻找命令或程序
HOME 当前用户主目录
HISTSIZE 历史记录数
LOGNAME 当前用户的登录名
HOSTNAME 指主机的名称
SHELL   当前用户Shell类型
LANGUGE  语言相关的环境变量,多语言可以修改此环境变量
MAIL   当前用户的邮件存放目录
PS1    基本提示符,对于root用户是#,对于普通用户是$

10.如何监控一个日志文件,实时查看最后几行,且带有”error”或 “debug” 字符串的行

tail –f /var/log/messages | grep -E error|debug

11.在linux 系统下 ,你编写的SHELL程序aaa.sh 是否可以立即执行,若不行,需要进行哪些处理才可以执行?

chmod u+x date

12.在超级用户下显示linux 系统中包含“”字符串的正在运行的全部进程,应使用的命令及参数是:

ps –aux | grep \”\”

13.在linux 系统下,包含了主机名和IP 地址的映射关系的文件是

/etc/hosts

0 0