131. jdk1.8之后的新特性?
1:支持函数式编程 Lambda 表达式
2:方法引用
3:集合的stream处理
最大的变化是:jdk的内存结构发生重大变化永久代弃用,class信息使用本地内存存储常量池移动到堆当中
132数据库调优(重点)
1:数据库结构优化设计数据库的时候,要预估单表的峰值,因为以Mysql为例,当单表的数据超过千万条,查询速度就特别缓慢了,这里就需要对数据库进行分库分表(数据分片),为了提高查询和写入性能,mysql可以采取主从结构主数据库采用innodb引擎,从数据库采用myIsam引擎,主从之间通过监听主数据库的binlog日志来完成数据一致。
从服务器有两个线程,一个是IO线程,一个是sql线程,IO线程负责读取主mysql服务器的binlog日志,把读取到的日志放入到中继日志中,sql线程负责读取中继日志,并转成具体的操作,实现数据的一致性。
2:SQL优化,本质是通过创建索引,使用explain关键字,查询索引命中情况,对sql进行调优
3:使用缓存层,预先对经常常用的数据库数据进行缓存,减少数据库的压力提高数据库性能
133.Mysql主从如何切换的?
当时我们在项目当中利用spring的aop来完成数据源的动态切换的,首先我们准备两个数据源,一个连接主服务器,一个连接从服务器,然后我们编写一个类,里面实例化一个threadlat,用来保存当前线程的数据源,我们还需要编写一个类,此类继承spring提供的abstractreeingdatasourct,重写里面的一个方法,我们还需要一个切面类,因为service层有事务的支持,所以切入点指向service层,对于曾删改的时候,我们使用主mysql数据源,对于查询的用从数据源。
134. tomcat的工作原理
tomcat的核心组件包括server(服务器) service(服务) connector(连接器) Executor(执行器) engine(servlet引擎).
server当中有一个catalina服务,调用conector组件接收用户的连接,conector底层是通过socketServer监听8080端口号接收客户端的tcp连接的,接收到连接之后,会调用 Executor(执行器)创建或捞取线程执行业务逻辑处理,最后再调用servlet引擎完成请求以及响应
135. tomcat调优
1.tomcat默认的线程创建方式,是一次请求,创建一个新的线程来处理优化方案,可以配置线程池来创建和管理线程,可以设置线程数量
2.tomcat默认的连接处理方式是BIO,阻塞的IO,容易造成客户端堵塞优化方案:使用http11Nio协议来进行连接的处理
3:因为tomcat是基于jvm的,所以应该对jvm的启动参数进行调优(堆栈内存、垃圾收集器)
136.Git和SVN的区别
GIT是分布式版本控制系统,其他类似于SVN是集中式版本控制系统。
分布式区别于集中式在于:每个节点的地位都是平等,拥有自己的版本库,在没有网络的情况下,对工作空间内代码的修改可以提交到本地仓库,此时的本地仓库相当于集中式的远程仓库,可以基于本地仓库进行提交、撤销等常规操作,从而方便日常开发。
137.Git工作流程
1、在工作目录中修改某些文件
2、对修改后的文件进行快照,使用add命令添加到暂存区域
3、使用commit命令将保存在暂存区域的文件快照永久转储到Git的本地仓库目录。
4、使用pull把远程仓库的文件和本地仓库文件进行同步如果存在冲突文件则处理
5、使用push命令把本地仓库的代码推送到远程仓库中
138. 列举工作中常用的几个git命令?
新增文件的命令:git add file或者git add .
提交文件的命令:git commit –m或者git commit –a
查看工作区状况:git status –s
拉取合并远程分支的操作:git fetch/git merge或者git pull
查看提交记录命令:git reflog
139. fork、 branch、clone 之间的区别
fork:是对存储仓库(repository)进行的远程的,服务器端的拷贝。复刻不是 git 范畴。
clone:不是复刻,克隆是对某个远程仓库的本地拷贝。克隆时,实际上是拷贝整个存储仓库,包括所有的历史记录和分支。
branch:是一种机制,用于处理单一存储仓库中的变更,并最终目的是用于与其他部分代码合并。
140.fetch和merge和pull的区别
pull相当于git fetch 和 git merge(pull = fetch + merge。),即更新远程仓库的代码到本地仓库,然后将内容合并到当前分支。
git fetch:相当于是从远程获取最新版本到本地,不会自动merge
git merge : 将内容合并到当前分支
git pull:相当于是从远程获取最新版本并merge到本地
更多面试题,请关注我,java面试分栏中,查看更多经典面试题