Java面试①整体流程
Java面试②基础部分
Java面试③web部分
Java面试④数据库部分
Java面试⑤前端部分
Java面试⑥框架部分
Java面试⑦高级部分
Java面试⑧项目和业务部分
2.6.1有没有用过Linux?你都用它来做什么?
Linux是一个长时间运行比较稳定的操作系统,所以我们一般会拿他作为服务器(web,db,app等)。
Linux本身具有C的编译环境,我们的一些软件是没有软件包的(redis等),需要在Linux的C编译环境编译得到软件包
2.6.2说一下Linux下面的一些常用命令
常用:
pwd 获取当前路径
cd 跳转到目录
su -u 切换到管理员
ls 列举目录
文件操作命令:
文件
tail 查看
rm -rf 删除
vim 修改
文件夹
mkdir 创建
rm -r 删除
2.6.3你使用什么来连接远程的Linux服务器
连接远程需要依赖于Linux服务器安装ssh服务端,一般这个ssh服务的端口为22
连接远程需要依赖于Linux服务器安装sftp服务端,一般这个sftp服务的端口为25
使用ssh客户端连接Linux服务器,就有点儿像Windows下面的远程连接,但是Linux通过ssh连接上以后是没有图形界面,全是命令。
putty
Xshell
使用sftp客户端来连接sftp服务端,来上传和下载文件。(上传安装包,修改配置文件上传。)
winscp
xftp
企业中常用的两种组合:
putty+winscp
xshell+sftp+manager
面试:使用xshell、putty等ssh客户端来连接服务器,使用xftp、winscp等sftp客户端来上传和下载文件,连接和上传、下载必须依赖于服务器的ssh、sftp服务,也就是Linux服务器需要启动这两个服务。
2.6.4有没有使用过云主机?
使用过,在原来的公司,我们没有使用自己的服务器,而是租用阿里的云主机。
没有使用过,但有所了解。
云主机就是一些云服务运营商(阿里、华为、西部数码、新浪等),提供的远程的服务器功能,我们开发者或者企业只需要按需付费就可以租用对应的服务器。
使用ssh和sftp来进行操作
2.6.5有没有做过数据库优化方面的事情?
做过mysql数据库的优化,其他数据库类似
查找、定位慢查询,并优化
优化手段:
1、创建索引:创建合适的索引,我们就可以在索引中查询,查询到以后直接找对应的纪录。
2、分表:当一张表的数据比较多或者一张表的某些字段的值比较多并且很少使用时,采用水平分表和垂直分表来优化。
3、读写分离:当一台服务器不能满足需求时,采用读写分离的方式来进行集群。
4、缓存:使用redis来进行缓存
5、一些常用优化技巧
2.6.6查找慢查询并定位慢查询?
在项目自验项目转测试之前,在启动mysql数据库时开启慢查询,并且把执行慢的语句写到日志中,在运行一定时间后,通过查看日志找到慢查询语句。
使用explain慢查询语句,来详细分析语句的问题
2.6.6数据库优化之遵循范式
数据库设计时需要遵循方式
什么样的表才是符合3NF(范式)
表的范式,是首先符合1NF,才能满足2NF,进一步满足3NF
1NF:即表的列具有原子性,不可再分割,即列的信息,不能分解,还要数据库是关系型数据库(mysql/oracle/db2/sybase/sql server),就自动满足1NF,关系型数据库中是不允许分割列的。
2NF:表中的记录是唯一的,通常我们设计一个主键来实现
3NF:即表中不要有冗余数据,就是说,表的信息,如果能够被推导出来,是不应该单独的设计一个表字段来存放。
反3NF:没有冗余的数据库未必是最好的数据库,有时为了提高运行效率