1、数据库
问题一:数据库分页查询的语句?
参考答案:
1.mysql:使用limit函数,用法:LIMIT [offset,] rows
例如:SELECT * FROM table LIMIT 5,5; // 检索记录行 6-10
2.Oracle:使用rownum函数,使用嵌套查询。
例如:select * from (select t.*,rownum rn from table1 t) where rn >5 and rn <=10
3.SqlServer:使用top或者row_number函数,使用嵌套查询。
例如:select * from (select t.*,row_number() voer(order by id) as rn from table1 t) where rn >5 and rn <=10
问题二:数据库索引的作用?优点和缺点?什么样的字段适合建索引?
参考答案:
作用:主要作用是提高查询性能
优点:
第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。
第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
缺点:
第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度
适合建索引的字段:
在经常需要搜索的列上,可以加快搜索的速度;
在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;
在经常用在连接的列上,这 些列主要是一些外键,可以加快连接的速度;
在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;
在经常需要排序的列上创 建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;
在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。
不适合建索引的字段:
第一,对于那些在查询中很少使用或者参考的列不应该创建索引。
第二,对于那 些只有很少数据值的列也不应该增加索引。
第三,对于那些定义为text, image和bit数据类型的列不应该增加索引。
第四,当修改性能远远大于检索性能时,不应该创建索引。
问题三:数据库连接池的作用?
参考答案
第一,资源重用
由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统消耗的基础上,增进了系统环境的平稳性(减少内存碎片以级数据库临时进程、线程的数量)
第二,更快的系统响应速度
数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于池内备用。此时连接池的初始化操作均已完成。对于业务请求处理而言,直接利用现有可用连接,避免了数据库连接初始化和释放过程的时间开销,从而缩减了系统整体响应时间。
第三,新的资源分配手段
对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接的配置,实现数据库连接技术。
第四,统一的连接管理,避免数据库连接泄露
在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用的连接,从而避免了常规数据库连接操作中可能出现的资源泄露
2、linux
问题一:ls命令的作用?可以跟哪些参数?ls -l 命令查询出来的列表展示了哪些信息? 如何修改文件权限?
参考答案:
作用:列出目录中的内容
可选参数:
不带参数: 默认列出目录下的所有文件名
-l: 列出目录下子目录和文件的详细信息(注,ll相当于ls –l)
-a: 列出目录下所有东西,包括隐藏的
-t : 按最后修改时间排序
-S: 按文件大小排序。(大写的S)
-r: 排序时按倒序。
ls -l列表展示信息:
例如:
第1行:总计(total);Total后面的数字是指当前目录下所有文件所占用的空间总和。
第1字段: 文件属性字段;"-"表示普通文件,“d”表示是一个目录,“l”表示是一个链接文件
第2字段:文件硬链接数
第3字段:文件(目录)拥有者
第4字段:文件(目录)拥有者所在的组
第5字段: 文件所占用的空间(以字节为单位)
第6字段:文件(目录)最近访问(修改)时间
第7字段:文件名
修改文件权限:命令chmod
r->4 可读;w->2 可写;x->1 可执行
问题二:查看某个端口是否被占用的命令?
参考答案:
1.使用lsof -i:端口号,如:lsof -i:8080
2.使用netstat -anp | grep 端口号,如netstat -anp | grep 8080
问题三:查看内存使用情况的命令?如何释放缓存?
参考答案:
查看内存使用情况:
1.使用top命令
2.使用free命令
释放缓存:
1.清理页面缓存:echo 1 > /proc/sys/vm/drop_caches
2.清理目录缓存:echo 2 > /proc/sys/vm/drop_caches
3.清楚所有缓存:echo 3 > /proc/sys/vm/drop_caches
3、网络相关
问题一:get和post的区别?
参考答案:
问题二:http返回状态码有哪些,分别代表什么意思?
参考答案:
状态码
|
类别
|
原因
|
---|---|---|
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 |
常见:
1.200:表示从客户端发来的请求在服务器被正常处理了
2.204:表示从客户端发来的请求在服务器被正常处理了,但在返回的响应报文中不含实体的主体部分。
3.301:永久性重定向。该状态码表示请求的资源已被分配了新的URI,以后应使用资源现在所指的URI。也就是说,如果已经把资源对应的URI保存为书签了,这时应按Location首部字段提示的URI重新保存。
4.302:临时性重定向。该状态码表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问。
5.304: 该状态码表示客户端发送附带条件的请求时,服务器端资源已找到,但未符合条件请求。
6.400: 该状态码表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。
7.401: 该状态码表示发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)的认证信息。另外,若之前已进行过1次请求,则表示用户认证失败。
8.403: 该状态码表明对请求资源的访问被服务器拒绝了。
9.404: 该状态码表明服务器上无法找到请求的资源。除此之外,也可以在服务器端拒绝请求且不想说明理由时使用。
10.500: 该状态码表明服务器端在执行请求时发生了错误。也有可能是Web应用存在的bug或某些临时的故障。
11.503: 该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。
12.504: 网关超时,由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答。
问题三:描述一下一次完整的http请求过程?
参考答案:
1. 建立TCP连接
2. Web浏览器向Web服务器发送请求命令
3. Web浏览器发送请求头信息
4. Web服务器应答
5. Web服务器发送应答头信息
6. Web服务器向浏览器发送数据
7. Web服务器关闭TCP连接
编程语言
Java
问题一:String,StringBuffer和StringBuilder的区别?
参考答案:
String 字符串常量
StringBuffer 字符串变量(线程安全)
StringBuilder 字符串变量(非线程安全)
问题二:static关键字的作用?
参考答案:
static关键字主要有两种作用:
第一,为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关。
第二,实现某个方法或属性与类而不是对象关联在一起
在Java语言中,static主要有4中使用情况:成员变量、成员方法、代码块和内部类
问题三:简述一下Java的垃圾回收机制?
参考答案:
能大概说出涉及到的一些方法:引用计数、标记清除法,标记压缩算法,分代算法,分区算法等
Python
问题一:列表和元祖的区别?
参考答案:
列表是可变的,元祖是不可变的
问题二:装饰器的作用和功能?
参考答案:
装饰器经常被用于有切面需求的场景,较为经典的有插入日志、函数执行时间统计,执行函数前预备处理,执行函数后的清理功能等。
有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用。
概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。
问题三:Python是如何进行内存管理的?
参考答案:
能大概说出涉及到的一些方法:引用计数、标记清除、分代回收等
开源工具
git&github
问题一:列举常用git命令
git clone http://gitlab.gf.com.cn/gfTestTeam2/ECRM/uatPCUI.git --将gitlab上的项目下载到本地
Git add filename -- 添加文件到stage
Git status --查看分支当前状态
Git commit –m “comments” --将修改同步到stage
Git push origin master --将本地master 分支同步到gitlab上master分支
Git branch --查看分支
Git checkout –b dev --新建一个分支dev
Git checkout dev --切换到现有分支dev
Git checkout master, git merge dev 将dev分支的内容合并入master
Git branch –d dev --删除dev 分支
Git push origin dev –将当前分支推送到gitlab dev分支
Git checkout –b dev origin/dev 将gitlab上的dev分支下载到本地dev分支
Git pull 将远程分支同步到本地
问题二:如何合并分支
例如将分支dev合并到分支master
第一步切换到分支master:git checkout master
第二步合并分支dev到当前分支master:git merge dev
问题三:github的ssh访问与http访问方式有和异同
ssh配置被访问机器与github直接的信任关系,访问github时无需输入用户名密码
http访问github需要输入用户名密码
Jenkins
问题一:如何在指定的远程机器上运行Jenkins构建
将改机器配置为Jenkins节点,并在构建中指定在该节点运行
问题二:Jenkins从指定的github下载代码如何配置
第一步Jenkins server需要配置了git插件
第二步Jenkins server需要配置指定了节点机器上git的路径
第三步Jenkins的构建中指定源码仓库为指定的github网址
问题三:一个构建的开始是以另一个构建的成功完成为条件的,在Jenkins中如何设置
在第一个构建中"增加构建后操作步骤“中的”构建其它工程“中配置运行第二个构建并选择”只有构建稳定时触发“, 对于双引号中的术语不必完全吻合,是这个意思即可。
问题四:multijob的使用场景
使用在多job嵌套执行中,需要安装Multijob plugin
例如JobA包含子Job1,Job2, Job1&Job2全部执行完成JobA才完成,全部执行成功才成功
JobA
---Job1
—Job2