基础技能
1. 前端开发
技术知识点:
HTML:
标签
页面标签:head(头部) body(正文) title(页面标题)
文本标签:font,h1-h6(文本标题从大到小),i (字体倾斜) B(加粗) U(下划线)Strong(加粗)p(段落)br(换行)
水平线:hr
图像:image src(图片来源) alt(图片不能打开时给出提示)
超链接:a href(后面接地址)target(页面打开方式)target = blank(重新打开一个页面) target = self(当前页面打开)
表格:table(表格) tr(行) td(列)
表单:文本框 :input type =“text”
密码框:input type =“password”
按钮:input type = “button”
单选框:input type =“radio”
复选框:input type = “CheckBox”
下拉框:select option
文本域:textarea
其他:ol+li(有序)ul+li(无序)iframe(显示文字)audio(音频)video(视频)marquee(滚动)
属性
Font:color(字体颜色)size(字体大小)face(字体类型)
Image:width(宽)height(高)align(位置)src(图片来源)
Table:bgcolor(背景色)width(宽)height(高)align(位置)cellspacing(格子间的距离)cellpadding(格子内间距)
Tr:bgcolor(背景色)width(宽)height(高)align(位置)
Td:bgcolor(背景色)width(宽)height(高)align(位置)
Hr:width(宽)height(高)align(位置)
其他:controls(播放器控制栏) loop(循环方式)autoplay(是否自动播放)
CSS:
属性
文本类:font-size(字体大小)font-family(字体类型)font-weight(字体重量bold表示加粗)font-style(文本风格normal表示正常显示,italic表示斜体)color (颜色)
位置类:border(边框,三个值:第一个值表示边框线,第二个值表示边框线粗细,第三个是颜色)width(宽)height(高)text-aline (文本水平居中)margin(位置组合属性) border-spacing(格子间距离) padding(内间距) border-radius(半径设置) line-height(垂直居中,与height一样,且只对单行有效)vertical-align(垂直对齐) float(浮动)position(fixed)(定位)rgba(0,0,0,0-1)(颜色,前三位数是颜色,后面是透明度)。
背景:background-size(大小)background-color(颜色)background-image(图片)
选择器
1. 标签选择器:标签名{css属性}
2. ID选择器:#id名{css属性}
3. Class选择器:.class名{css属性}
4. 组合选择器:(1)父子组合,以空格隔开 #父名 子名 {css 属性}。(2)平级组合,以逗号隔开, #a名,#b名 {css 属性}。
5. 伪类选择器:一般用于超链接, # a:link,#a:visited { css属性 } #a:hover,#a:active { css属性 }其中有link(默认时)和visited(访问后)时,这两个放一起,hover(悬浮时)和active(激活时)放一起
div
- 盒模型 :margin(外边距)padding(内间距)border(边框)content(内容)
- 浮动:float(left左浮动 right右浮动)
- 定位:position(fixed(绝对定位于窗口的某个位置)absolute(绝对定位于某个页面的位置)relative(相对位置))
- 嵌套:div嵌套div跟表格的tr 里放td一样,外层div 相当于tr,内层div相当于td
Javascript
语法:在head里面写script
输入:prompt(以弹出框的形式输入)
输出:document.write(“”)(向浏览器窗口输出)
Alert()(以弹出框的形式输出) console.Log()(以日志形式输出)
数据类型:undefined(未定义)null(空)number(数字)string(字符串)Boolean(布尔)
数据类型转换:parseint()把字符串型转换为整形
分支结构:if···else···,switch···case···
循环结构:for(条件){循环体}while(条件){循环体}do{循环体}while(条件)
数组:var arr = [“1”,“1”,“1”,“1”,“1”]
函数:function 函数名(参数){函数体} 调用时:函数名(参数)
DOM对象:DOM document object model 文档对象模型 ,它是使用JS的方式去操作页面元素,主要是四个方面:增删查改
新增:创建:var mydiv=document.createElement(‘div’)
设置样式 :mydiv.style.height=‘20px’
添加到页面中:document.write.appendchild(mydiv)
查找:var mydiv = document.getElementById(“”)
删除:mydiv.remove();
修改:先查找,在设置样式
事件:
鼠标事件:onclick(点击事件)onmouseover(鼠标放上去触发)onmouseout(鼠标移走时触发)
键盘事件:onkeypress 键盘输入时触发 onkeyup 按键松开时触发
表单事件:onfoucs 光标移动上去时触发 onblur 失去焦点是触发 onchange光标内容改变时触发
重点难点:
JavaScript编程逻辑题。
实际应用:
Agileone的几个页面。
官网。
常见面试题:
无。
想办法自己把会的说出来。+5分
我看你简历上面还会前端开发的东西,介绍一下呗?项目思路?所用技术?
注意:如果面试官不会,一定不要有鄙视之类的表情和动作和话语。虚心的。
任务:
花20分钟把前两周做的任务练习看一下,表达出来。专业词汇
2. 数据库
技术知识点:
DDL:数据定义语言
1.数据库的基本操作:
创建数据库 create database 数据库名称;
查询指定数据库 show create database 数据库名称;
查询数据库:show databases;
删除数据库:drop database 数据库名称;
修改数据库:alter database 数据库名称 + 修改内容 set 修改后内容
2.表的基本操作:
查看数据库中的表:show tables;
创建表:create table 表名(字段名1 数据类型,字段名2 数据类型 );
查看表结构:desc 表名;
删除表:drop table 表名;
修改表数据:alter table 表名 过滤条件
过滤条件:add column 字段名 数据类型(添加字段)
Drop column 字段名(删除字段)
Change column 旧字段名 新字段名 旧字段数据类型(修改字段)
Modify column 字段名 新数据类型(修改数据类型)
Rename to 新表名
DML:数据操纵语言
增加内容: insert into 表名(字段名) values (值)(表名后跟了字段名时,值要与表名后字段名的数据类型对应,不跟字段名时,要添加每一个的值)
修改内容:
修改字段某个的值:update 表名 set 字段名 = 新值 where 字段名 = 旧值
修改字段的所有值:update 表名 set 字段名 = 新值
修改多个字段的某个值:update 表名 set 字段名1 = 新值1,字段名2= 新值2 where 字段名1 = 旧值1,字段名2=旧值2;
删除内容:
删除整个表内容:delete from 表名(只删除数据,不能删除约束)
删除整个表内容:truncate table 表名(删除数据和约束)
删除某条内容:delete from 表名 where 条件(条件为要删的那条数据信息)
DQL:数据查询语言
基础和高级
查询所有字段:select * from 表名
查询某个字段:select 字段名 from 表名
查询多个字段:select 字段名1,字段名2 from 表名
查询某一条数据:select * from 表名 where 条件
去重复查询:select distinct 字段名 from 表名
查询空值:select * from 表名 where 字段名 is null
多条件查询:select * from 表名 where 字段名1的值 and 字段名2的值
分页查询:select * from 表名 limit m,d(m是从几条开始查,d是查询几条)
模糊查询:select * from 表名 where 字段like “%”(_)(%表示任意字符,下划线表示一个字符)
排序: select * from 表名 order by 字段名(asc升序 desc 降序)
分组查询:select 字段名1 from 表名 group by 字段1
子查询:select * from 表名1 where 字段名1 in(select 字段名2 from 表名2 where 条件)6联合查询:select * from 表名1 union select * from 表名2
连接查询:
内连接:select * from 表名1 inner join 表名2 on 连接条件
外连接:
左连接:Select * from 表名1 left outer join 表名2 on 连接条件
右连接:Select * from 表名1 right outer join 表名2 on 连接条件
范围查询:select * from 表名 where 字段名 between 值1 and 值2
聚合函数:max()sum()avg()min()count()
Select max(字段名) from 表名
DCL:grant revoke commit rollback
列出关键字和常用语句用法。
三大范式
第一范式:无重复的列(列的原子性),每一列都是不可分割的数据项
第二范式:无重复的行(行的唯一性),满足第一范式,要求实体的属性完全依赖于主键字段
第三范式:主表与外表(消除传递的依赖),满足第二范式,一个数据表中不包含已在其他表中已包含的非主键字段
七大约束
关键字、语法、作用
主键:primary key 语法:字段 数据类型 primary key 作用:指定某个字段的数据不能重复、为空
外键:foreign key 语法:constraint FK_表1_表2 foreign key (从表字段) references 表2(主表字段) 作用:保证数据的一致性和完整性(改变主表关联从表字段的数据时,从表数据也跟着改变)
默认值:default 语法:字段 数据类型 default 值 作用:指定某个字段的默认值
非空:not null 语法:字段 数据类型 not null 作用:指定某个字段不为空
唯一:unique 语法:字段 数据类型 unique 作用:指定某个字段的值唯一
自增长:auto-increment 语法:字段 数据类型 auto-increment 作用:指定某个字段的值每次自动加1
高级
视图 view create view a select * from student, score where ... 虚表
触发器 trigger 限制约束 多了也不好
存储过程 procedure 把一些sql语句封装到一个方法中
索引 index 相当于书的目录 查询效率
关键字、语法、作用
视图是一张虚拟表,视图只供查询,数据不可更改,查询数据来源于我们建立的实体表。视图可以从多个复杂的关联表中提取出我们需要的信息,提高查询速度。
触发器:trigger 语法:create trigger 名字after insert on 表1 foreach row insert into 表2 values(值) 作用:当操作某张表时,同时能触发一些动作和行为
存储过程:procedure 语法:CREATE PROCEDURE PRO_TEXT ( 参数列表 ) BEGIN SQL语句 END 调用存储过程:call 存储过程名(参数) 作用:把一些SQL语句封装到一个方法中,提高执行效率。
索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构。作用:可快速访问数据库表中的特定信息。
重点难点:
DQL的应用。
实际应用:
如何对一个系统设计数据库。
搭建环境,准备数据。
常见面试题:
1.知道哪些约束呢?
主键,外键,自增长,非空,唯一,默认值,主键指定某个字段的值不能重复,为空;外键保证数据的完整性和一致性;自增长指定某个字段的值每次自动加1;非空指定某个字段的值不能为空;唯一指定某个字段的值不能重复;默认值指定某个字段的默认值。
2.主键和外键是拿来干嘛的?
了保证两个表某些数据的一致性。作为外键,它里面的数据必须是在主建中所存在的。举个例子:
有两个关系:
student(s#,sname,d#),即学生这个关系有三个属性:学号,姓名,所在系别
dep(d#,dname),即院系有两个属性:系号、系名
则s#、d#是主键,也是各自所在关系的唯一候选键,d#是student的外键。
3.用过查询吗?
用过,比如条件查询 select * from 表名 where 条件
模糊查询:select * from 表名 where 字段 like 条件
分页查询:select * from 表名 limit m,d
分组查询:select * from 表名 group by 字段1
排序:select * from 表名 order by 字段名{默认降序desc 升序asc}
范围查询:select * from 表名 where 字段 between 值1 and 值2
子查询:一条数据查询的结果用来做另一个数据查询的条件
4.查询出成绩前三名的学生姓名?
SELECT STU_NAME FROM SCORE ORDER BY STU_SC DESC LIMIT 3;
5.一条语句查询男生和女生的平均成绩?
SELECT STU_SEX,AVG(STU_SC) FROM SCORE GROUP BY STU_SEX;
6.把成绩小于60分的同学的成绩改为60。
UPDATE SCORE SET STU_SC = 60 WHERE STU_SC < 60;
7.你只用过mysql吗?sql server、oracle。
遵循的同一个sql规范。
能说出3点区别:
分页查询时:sql server 使用top关键字
Mysql 使用limit关键字 Oracle 不支持mysql中limit功能,但他是通过rownum来限制返回的结果集的行数
字符串拼接:sql server 使用 + ;MySQL使用concat(); Oracle 使用的是||;
大体上讲,Oracle的数字类型更加简单,大部分情况直接设置number类型就行。而不需要像mysql及sqlserver设置各种数字类型。
8.你们测试都是用的root账户,安不安全呢?
是的,因为我们是小型公司,人员比较少,用一个root账号,工作中协调调度都比较方便,如果设置多个管理账户,不利于工作的开展,出现权限问题,要不断的取沟通,浪费了时间,降低工作效率。
任务:
花1个小时打开你的navicat,做以前做过的至少5道题,看其他题,把忘记的补一下,问我。
3. Linux
技术知识点:
命令:
至少4类,20个,中英文
编辑命令:i 从命令模式进入编辑模式
ESC 从编辑模式进入命令模式
:wq 保存并退出
文件操作命令:
Vi 生成新文件或者编辑文件 vi a 生成文件a
Cat 查看文件内容 cat a 查看a的内容
Cp 复制文件 cp a /b 把a复制到b中
Mv 剪切文件 mv a /b 把a剪切到b中
Rm 删除文件 rm a删除文件a
文件夹操作命令:
Ls 显示当前目录内容
Ls-l(ll)显示当前目录详细内容
Pwd 显示当前所在目录
Cd 切换到当前用户所有主目录
Cd a文件夹 切换到文件夹
Cd / 返回主目录
Mkdir 创建目录 mkdir a 创建目录a
Rmdir 删除目录 rmdir a 删除目录a
权限操作命令:
Useradd 新增用户 useradd a 新增用户a
Userdel 删除用户 userdel a 删除用户a
Passwd 修改密码 passwd a 修改用户a的密码
Chmod 修改文件或目录条件(r表示可读,w表示可写,x表示可执行) chmod 777 xxx 把xxx文件的权限修改为777
文件查找命令:
Find 查找文件 find . -type d -name “***”查找目录为***的文件夹
find . -type f -name “***”查找目录为***的文件
Find .-mtime -3(+3)查找当前目录3天前(内)操作过的文件
Grep 查找文件 通常跟管道一起用 比如 ps -ef | grep bash 查看系统正在运行的进程名包含bash 的进程 管道 :左边的输出作为右边的输入
系统管理类命令:
Reboot 重启
Shutdown 关机
Ifconfig 查看当前网卡信息
Ifconfig eth0 192.168.0.55 设置eth0网卡的IP地址
Ifconfig eth0 up 启用eth0网卡
Ifconfig eth0 down 禁用eth0 网卡
Ps 查看当前终端正在运行的进程
Ps -ef查看系统正在运行的所有进程
Kill pid 终极进程 pid 为进程号
重定向 :>覆盖添加 >>累加 比如 a>b 把a文件的内容添加到b中,并覆盖b内容
A>>B把a文件的内容添加到b中,内容是在B文件内容后面累加
Df -h查看磁盘大小
Free -m 查看内存情况
Top 实时查看系统资源
Shell脚本:脚本后缀名.sh 调用时也用sh+脚本名调用
网卡设置脚本内容
#!/bin/bash
Set -x
Para1 = $1
Para2=$2
Service iptables stop
Service network restart
Ifconfig eth0 192.168.${para1}.${para2}
Route add default gw 192.168.${para1}.1
Ping 220.181.57.217
测试当前能ping通的网段
#!/bin/bash
Set -x
For(i=100,i<130,i++)
Do
Result =`ping 192.168.0.${i} -c 2`
Count=`echo${result} | grep `time=` | wc -l`
If[${count} -ne 0]
Then
Echo 192.168.0.${i}>>succ.log
Else
Echo 192.168.0.${i}>>fail.log
Fi
done
Shell脚本就是把Linux的命令放到脚本中,提高执行效率
测试环境安装:
哪些部分、各是什么作用、安装配置的步骤、过程中的问题
安装VMware虚拟机,装Linux ,lrzsz(用于Windows和Linux之间传输文件)
Gcc(c语言的编译器,因为后续有些软件是C语言写的,需要gcc进行编译安装)
Zip和unzip(用于压缩和解压);Apache 、MySQL、PHP (Java项目就安装 Tomcat、MySQL、jdk)将项目的网站放到Apache相应的目录下,在使用rz把项目压缩包上传至该目录解压,修改项目的权限为最大,修改Apache里Mod_rewrite的AllowOverride ,再在MySQL中创建项目的数据库,并设置访问权限。退出MySQL和关闭Linux se,进入网站进行安装。
重点难点:
命令
环境搭建
实际应用:
搭建测试环境。
常见面试题:
线程和进程各自有什么区别和优劣呢?
进程是资源分配的最小单位,线程是程序执行的最小单位。
进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。
线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。不过如何处理好同步与互斥是编写多线程程序的难点。
但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。
1.你熟悉Linux吗?
用过,Linux主要通过命令操作系统,常用命令中文件类
Cp mv rm vi cat mkdir rmdir ls pwd cd find grep
权限类 useradd passwd chmod
系统类 reboot shutdown ps kill df free top
重定向 >覆盖追加 >> 累加
管道 | 左边的输出作为右边的条件
2.介绍下Linux上搭建的web环境?
1.配置java环境
2.下载并安装tomcat
3.安装mysql并导入sql
4.项目导入并修改数据库连接配置
5.启动mysql,启动tomcat。
3.查询和杀死进程的命令?
Ps kill
4.实时查看系统资源
top
5.查看磁盘、内存?
Df free
6.测试网络是否连通的?
Ping baidu.com
7.介绍下find和grep命令。
Find 是查找目录下的文件 grep是筛选,对目标内容查找
8.文件权限命令怎么用?
Chmod 777文件名
任务:
至少2个小时,打开linux,操作常见的命令,查看下自己的环境,能够正常运行apache+mysql,tomcat+mysql。
4. Java编程
技术知识点:
变量和数据类型
八大基本数据类型:
Byte型 1字节
Short型 2字节
Int型 4字节
Long型 8字节
Float 型 4字节
Double型8字节
Boolean型 1/8字节
Char 型2字节
控制结构
分支结构:If···else、switch···case
循环结构:for(表达式){代码块}、 do{代码块}while(表达式)、while(表达式){代码块}
面向对象
对象:对象是实实在在的物体;
类:类是对整个事物的描述的一个集合;
类是对象的模板,对象是类的具体体现。
Java的三大特征:封装、继承、多态
封装:是指隐藏对象的属性和实现细节,仅对外提供公共的访问方式。作用:提高代码的复用性和安全性。
继承:让类与类之间产生关系,子与父的关系。(原因:子类拥有比父类更加强大的功能和属性)好处:提高代码的复用性和维护性。
多态:事物存在的多种形态。(前提:在继承关系下,有重写和父类引用指向子类对象)好处:提高代码的维护性和可扩展性。
重写:子类出现父类中方法名和参数列表相同的方法叫做重写。
重载:同一类中,方法名相同,参数个数、类型、顺序不同的就叫重载
抽象:abstract修饰的类和方法都是抽象的。包含抽象方法的类是抽象类。
接口:一些方法特征的集合。只有抽象方法的类就是接口。
抽象类只能继承,接口只有实现。
API:
String是不可变的字符序列,Stringbuffer 、Stringbuilder(字符串缓冲序列)可变字符序列
其中Stringbuffer是jdk1.0版本出现,线程安全,效率低
Stringbuilder是jdk1.5版本出现的,线程不安全,效率低
集合:
Collection是集合的接口,list和set接口继承Collection接口,list接口特点:有序,有索引和可以存重复值,set接口的特点:无序,无索引,不可以存重复的值。ArrayList、linkedlist、vector实现了list接口。其中ArrayList和vector的底层是数组,查询、修改数据快,增加、删除数据慢。Linkedlist的底层是链表,查询、修改数据慢,增加、删除数据快。Hashset和treeset实现set接口,hashset的底层是哈希算法,treeset的底层是二叉树算法。
Map是将键映射到值的对象,一个键只能映射一个值,其特点是无序和不可重复。Hashmap和treemap实现map集合,hashmap底层是哈希算法,treemap底层是二叉树算法。
进程:一个可执行程序就是一个进程
线程:进程的基本单元,一个进程的每个任务都是一个线程
线程的生命周期:新建—就行—运行—阻塞(等待、同步、其他)—死亡
Wait()、sleep()、yield()都是阻塞中的方法。
并发:CPU短时间内依次执行多件事,给人的感觉是同时执行多件事。
IO流:字节流和字符流。字节流的父类inputstream和outputstream,字符流的父类是reader和writer。字节流中有fileinputstream(文件字节流,直接操作文件)、bufferedinputstream(缓冲字节流,可以一次读一行)、bytearrayinoutstream(内存数组流,可以向内存中写数据)、objectinputstream(对象流,持久化保存数据)。字符流中有filereader(文件字符流,直接操作文件)、bufferedreader(字符缓冲流,一次读一行)、inputstreamreader(字符转换流,自由转换字符字节流)
重点难点:
面向对象 – 封装、多态、抽象、接口
API -
实际应用:
WoniuATM
Tank
常见面试题:
1.看你还会Java,具体会些什么?
2.面向对象的特征有哪些?
封装、继承、多态。
3.什么是构造方法?3W1H
构造方法就是方法名和类名相同,没有返回值。给对象的数据进行初始化值
4.重写和重载的区别?
重写:子类出现父类中方法名和参数列表相同的方法叫做重写。
重载:同一类中,方法名相同,参数个数、类型、顺序不同的就叫重载
5.接口和抽象类有什么区别?
接口的方法只有抽象方法,抽象类的方法可以有普通方法。
抽象类是被子类继承,接口是被类实现。
接口与类只有实现,可以单实现,也可以多实现。
抽象类只有继承,且只能单继承和多层继承。
6.接口的作用是什么?
对外提供规则的接口,它是一些方法的声明,在不同的地方实现这些接口,可以实现不同的功能。
7.集合类、IO类、线程、网络?
集合:长度可自动扩展,默认长度为10,以1.5倍的速扩展;可以存任何对象,而且只能存对象。
创建线程:
1、继承thread类,重写该类的run方法。
2、实现runnable接口,并重写该接口的run方法。
Io流:
1、字节流,文件字节流,缓冲区字节流,对象流,对象数组。
2、字符流,文件字符流,字符缓冲流,转换流。
任务:
花一个小时,把tank的结构、类搞清楚。
5. 网络协议
技术知识点:
OS1七层参考模型是由ISO组织制定的
TCP\IP四层模型
5种协议
Tcp和udp的区别
Tcp的机制
HTTP:特点、请求响应、头正文、cookie、session
1.OS1七层参考模型是由ISO组织制定的
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
2.TCP\IP四层模型
应用层
传输层
网络层
物理层
5种协议:TCP、UDP、IP、HTTP、FTP、SMTP
Tcp和udp的区别
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
传输速度的快与慢,可靠与不可靠,tcp有三次握手、四次挥手,而udp没有
Tcp的机制
三次握手、四次挥手
HTTP特点
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
请求类型
GET:获取某个资源
POST:向某个地址提交数据
请求响应:其中包括头和正文。
由于http协议是无状态无连接的所有就有了Cookie和Session这种保持用户状态的机制。其本质一样,区别在于Cookie保存在客户端。Session保存在服务器端。
重点难点:
HTTP说清楚。
实际应用:
用了哪些工具去分析了哪些方面。Httpwatch
为接口和性能打下基础。
常见面试题:
1.说下TCP\IP的四层模型?
应用层、传输层、网络层、物理层
2.TCP、UDP、IP、HTTP、FTP、SMTP分别是在哪个层?
TCP、UDP(传输层),IP(网络层),HTTP、FTP、SMTP(应用层)
3. Cookie和session的作用和区别?
Cookie和Session是一种保持用户状态的机制。其本质一样,区别在于Cookie保存在客户端。Session保存在服务器端。
4.请求的类型有哪些?区别?
Get:获取资源 post:提交数据 put:向某个特定地址上传其最新内容
Delete:用于删除请求URL上的某个资源
5.常见进程的端口号?mysql http https oracle ssh sqlserver
mysql 3306 http 80 HTTPS 443 ssh 22 ftp 21 sqlserver1433 Oracle1521
6.使用了哪些工具去分析协议?怎么用的?
在测试过程中,主要使用httpwatch、fiddler 或者浏览器自带的开发者工具去捕获请求,对请求和响应的头和正文进行分析,用其参数进行接口测试。
任务:
花点时间把概念,重点是HTTP的记清楚点。
测试核心技能
1. 测试基础
技术知识点:
概念:
质量模型:ISO9000 CMMI 六西格玛
ISO9000是ISO制定的一个质量标准体系,它制定了管理理念和原则
CMMI是专门针对软件行业制定的质量体系
六西格玛是一个全面质量管理体系,不仅仅是质量提高手段
分类:
类型:功能、可用、兼容、可靠、安全、性能
方法:
黑盒:不考虑代码的逻辑结构和特性,根据需求规格说明书验证程序是否符合它的功能说明。
灰盒:黑白测试的组合。
白盒:针对代码的逻辑结构进行测试。
阶段:单元测试、集成测试、系统测试
手段:
静态:不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。
动态:动态测试方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能
手动、自动化
过程:分析、设计、实现、执行
用例设计:有哪些、使用策略
主要是划分等价类,边界值,正交试验法,流程分析法,错误推测法。在E-shop系统中的搜索框使用等价类和边界值进行测试,划分有效等价类和无效等价类。设计测试用例覆盖有效等价类和无效等价类。对下单、加入购物车、确认订单、结算这些功能使用流程分析法和正交试验法进行测试。最后使用错误推测法补充测试用例。
缺陷:专业名词、属性(项)、生命周期(管理流程)、工具
属性:创建人、指派人、优先级、严重度、操作步骤、期望结果、实际结果bug类型、操作系统、浏览器、bug标题、所属产品、所属模块、所属项目、影响版本、抄送人、相关需求、
相关任务
工具:禅道、bugfree
周期:new-open-fixed(duplicate(重复),rejected(拒收)design(设计如此),postpone(延期))-close (reopen)
重点难点:
项目中设计高质量测试用例
实际应用:
用例设计那些题。
常见面试题:
1.用例设计方法有哪些?
主要是划分等价类,边界值,正交试验法,流程分析法,错误推测法。在E-shop系统中的搜索框使用等价类和边界值进行测试,划分有效等价类和无效等价类。设计测试用例覆盖有效等价类和无效等价类。对选择物品、加入购物车、结算这些功能使用流程分析法和正交试验法进行测试。最后使用错误推测法补充测试用例。
2.你用的缺陷管理(项目管理)工具是什么?怎么用的?
禅道:在禅道上新建测试用例,并执行测试用例,测试用例执行失败,则转BUG,在BUG提交页面上填写相应信息,指派给PM,由他判断是否是BUG,不是则关闭,是就指派给相应的开发人员。开发人员确认是否是BUG,不是则rejected,是则修改完成后指派给PM,PM指派给相应的测试人员进行测试,通过测试则close缺陷,没通过就rejected给PM再次判断缺陷。
任务:
2. 系统测试
技术知识点:
smeoa的项目介绍
项目流程
分析:分析和提取测试需求、编写测试计划
设计:设计测试方案、设计测试用例
实现:搭建测试环境、准备测试数据、实现测试用例
执行:执行测试用例、缺陷管理、回归测试、测试报告
重点难点:
项目流程
实际应用:
常见面试题:
1.你们的smeoa是怎么测试的?
首先,我们对需求规格说明书进行了分析,并提取测试需求,然后我们组长编写了测试计划,对本次测试进行工作分配,进而我编写了测试方案,测试方案体现了我们的测试策略,描述了当前测试我们需要用到哪些技术、方法和工具,然后我们使用了划分等价类,边界值,正交试验法,流程分析法,错误推测法等方法设计了测试用例,然后进行评审,且再次对测试用例进行优化,等版本发布后我们交叉执行我们的用例,并在执行的过程中优化用例,发现的bug提交到禅道上面交给开发进行处理,最后等我们这个测试阶段完成过后生成一个测试报告,来对我们当前的测试工作进行总结,并做一个思考和改进。
2.项目的流程是什么?
首先,我们对需求规格说明书进行了分析,并提取测试需求,然后我们组长编写了测试计划,对本次测试进行工作分配,进而我编写了测试方案,测试方案体现了我们的测试策略,描述了当前测试我们需要用到哪些技术、方法和工具,然后我们使用了划分等价类,边界值,正交试验法,流程分析法,错误推测法等方法设计了测试用例,然后进行评审,且再次对测试用例进行优化,等版本发布后我们交叉执行我们的用例,并在执行的过程中优化用例,发现的bug提交到禅道上面交给开发进行处理,最后等我们这个测试阶段完成过后生成一个测试报告,来对我们当前的测试工作进行总结,并做一个思考和改进。
3.你们的用例设计流程是什么?
分析规格需求说明书,提取测试需求,编写测试计划及测试方案,设计测试用例,通过评审再次优化用例。
4.你们的方案和计划是谁写的,重点是什么?区别是什么?
测试计划是我们组长写的,我写的测试方案,测试计划是管理型文件,方案是技术型方案,测试计划主要关注:人员、进度、组织、资源、测试范围等。而测试方案主要关注:技术、工具。计划主要介绍做什么的,方案主要是讲怎么测试的。
5.禅道是什么使用的?
新建BUG,并指派给PM,由他判断是否是BUG,不是则关闭,是就指派给相应的开发人员。开发人员确认是否是BUG,不是则rejected,是则修改完成后指派给PM,PM指派给相应的测试人员进行测试,通过测试则close缺陷,没通过就rejected给PM再次判断缺陷。
6.项目人员有多少,怎么分配工作的,测试周期是多久?
项目有4个人,每人负责2个模块,测试周期为3个月。
7.测试报告有哪些要点?
在测试报告中有本次测试中每个成员测试用例数,提交的bug数,对其出现bug的原因进行分析,总结本次的测试结果。对本次测试中表现不好的地方提出改进措施。
8.你最得意的bug是什么?最难找到的bug是什么?怎么找到的?
在E—shop系统中,同一个账号在不同的浏览器上登陆成功后能同时在线。做兼容测试的时候忘记在Firefox中忘记退出当前账号,在IE浏览器登陆该账号时并没有给出当前账号已登录的提示,在IE浏览器测试完成后,回到Firefox浏览器中发现当前账号未退出。
9.XX系统中你测试的模块是什么?怎么测的?
日报和个人两个模块,我们当时是分析需求规格说明书,提取测试需求,编写测试计划及测试方案,设计测试用例,并对用例进行评审,再次优化用例,版本发布后交叉执行用例,发现的bug提交到禅道交给开发处理,等本阶段测试完成后编写测试报告
10.如何和开发配合管理缺陷的。
新建BUG,并指派给PM,由他判断是否是BUG,不是则关闭,是就指派给相应的开发人员。开发人员确认是否是BUG,不是则rejected,是则修改完成后指派给PM,PM指派给相应的测试人员进行测试,通过测试则close缺陷,没通过就rejected再次指派给PM再次判断缺陷。
任务:
1. Tinyshop搞上去,或者其他的电商系统。
操作每个模块的功能
把核心功能打个草稿设计用例
准备三个缺陷
3. UI自动化
技术知识点:
UI自动化目的:使用工具或者程序代替人工进行测试,模拟人工难以实现的场景去测试。
原理:坐标定位:按键精灵。图像匹配:sikuli 特征识别:selenium 、QTP
适用范围(场景):冒烟测试、回归测试、兼容测试。
UI自动化工具:sikuli、selenium IDE RC WEBDRIVER
Junit、testng:注解、断言
数据驱动:实现测试数据和代码的分离,数据的变化会引起代码执行的变化,以数据为基础驱使自动化执行。
组件化框架:它是用分层的思想实现组件的框架,使代码不受测试类名、方法名的限制更好的实现数据驱动。
重点难点:
数据驱动
组件化框架
实际应用:
常见面试题:
1.自动化测试流程是什么?
分析:技术和工具的调研
设计:设计自动化测试的框架
实现:自动化测试的代码
执行:搭建自动化运行测试环境、自动化测试的数据、运行测试
维护:维护自动化测试的用例和脚本
2.介绍下selenium
Selenium是一款开源免费的基于特征识别的web自动化测试工具,现在有三个版本,1.0,2.0和3.0 。3.0才出来不久,所有主要还是用前两个版本,Selenium 1.0 包含selenium IDE 、selenium Grid、selenium RC 。Selenium 2.0 版本是在1.0版本上新增了一个selenium Webdriver。selenium RC 是1.0版本的核心,但现在主要用selenium Webdriver,Webdriver和RC相比它的API更加丰富,运行速度更快。
3. Webdriver常用API
findElement(查找元素)、sendKeys(输入值)、click(点击)、get(打开网页)、getText(获取文本信息)、clear(清除内容)、by(元素定位)
4.页面元素定位有哪些?
By(Id、cssSelector、xpath、linktext、name、classname、tagname),其中有id和name的时候选择id和name,都没有就选xpath
5. Junit、testng如何结合使用的?
Junit和testng都是测试的一种框架,这两种框架都是对它的注解和断言进行使用,我们对测试的方法加test注解,在测试方法之前加before注解,测试之后加after注解,在测试的方法中使用asserttrue、assertequals等断言。
6.什么是数据驱动?怎么设计框架的?结构是怎样的?
实现测试数据和代码的分离,数据的变化会引起代码执行的变化,以数据为基础驱使自动化执行。框架采用分层的思想,将代码分为工具层(读取Excel文件和解析文件)、动作层(测试中的操作)、测试层(调用动作层,进行断言)、主启动层(启动程序,开始测试)
7.什么阶段做的UI自动化,覆盖率是多少?
一般在冒烟测试和回归测试时使用UI自动化,覆盖率为20%~30%
任务:
2个小时至少把数据驱动的代码搞清楚,能够写出来。
4. 协议的接口功能性测试
技术知识点:
接口测试的作用:不受前端页面影响,直接对服务器进行彻底的针对测试
工具:浏览器自带工具,fiddler、httpwatch。
Java实现的
创建一个类读取Excel文件,实现发送get、post请求,实现保存cookie和正文的响应类,最后在主启动类中实现解析Excel文件并启动测试。
重点难点:
实际应用:
常见面试题:
1.接口测试如何开展的?(流程是什么)
分析:接口(协议)的需求的分析、捕获的工具、接口文档的分析
设计:测试用例、接口测试的框架
实现:框架的代码实现、用例实现
执行:搭建环境、准备数据、执行测试、提交缺陷
2.你做了哪些接口的测试?
对E—shop系统的登录,手机商城的选中物品-加入购物车-结算进行了接口测试。
3.接口测试的意义是什么?
抛开前端页面的影响,直接对服务器进行彻底的针对性测试
4.和UI自动化进行对比?
UI自动化是针对界面的测试,而接口测试是对服务器的测试,其中接口实现的功能不一定在页面能操作。
5.描述拿到的接口文档。
接口文档主要由接口名称、描述、URL、调用方式、传入参数、返回值组成
6.如何使用XX测试工具进行接口测试的?
使用soapUI工具进行接口测试,创建项目命名,创建测试用例集;.创建一条测试用例,右键add step,选择http request,填写地址、参数、请求类型;添加断言;执行测试。
任务:
花1个小时把基于Java的数据驱动的接口自动化理清楚。
5. 协议的接口性能测试
技术知识点:
原理:协议、多线程、真实模拟
分类:基准、负载、压力、配置、稳定性、容量
流程:
分析:性能需求
设计:性能方案、脚本
实现:环境、数据、脚本
执行:执行脚本
工具:loadrunner、jmeter
实现脚本
重点难点:
实际应用:
常见面试题:
1.性能测试的流程?
分析:性能需求
设计:性能方案、脚本
实现:环境、数据、脚本
执行:执行脚本
2.压力测试和负载测试的区别是什么?
压力测试:在一定的负荷条件下,长时间连续运行系统给系统性能造成的影响。
负载测试:在一定的工作负荷下,给系统造成的负荷及系统响应的时间。
3. Jmeter你们的脚本是录制就开始执行吗?
不是,先对脚本进行优化,然后设计场景再进行测试
4.脚本优化的点有哪些?
多账户(参数化)、断言(检查点)、操作间隔(思考时间)、集合点、后置处理器(关联)、事务控制器、循环控制器
5.关注的指标体系是哪些?
TPS:每秒处理事务数;Rt:响应时间;HPS:每秒处理请求数;服务器资源;线程数
6.对XX系统的性能测试,最终发现了什么瓶颈吗?得到了什么结论吗?
Cpu 在多用户同时并发的情况一直处于高负荷运行状态,增加CPU数量后再进行测试。
7.设计了哪些场景。
负载测试:每30秒增加20个用户,且在每个用户级下运行5分钟,直至用户数添加完成,并在最大用户数时运行10分钟后每30秒减少20个用户,且在每个用户级下运行5分钟,直到没有用户运行时结束
压力测试:100个用户同时登录,长时间运行后用户数直接掉0。
任务:
回顾Jmeter,看书。