前情提要

又一次的面试经历,下班去面试的,热情的HR,一家外企大公司,从未接触的规模与环境,满怀期待,面试的是三个中年男子,问了很多问题,真的很多,方方面面,感觉答的不是很尽善尽美,有些东西还是说不清楚或者完全没接触过,就这样,磕磕绊绊,半个小时的面试结束了。

第二天早上,热情的HR通知我下班去二面,人事面,谈工资福利,哇哦,这意思是不是就是通过啦,心里窃喜,不负众望,果然,通过啦,薪资和我心里的价码相差无几,新的生活即将开始!

面试真题系列近阶段应该不会再继续写了,感谢大家的支持,这四篇文章都是我的血和泪啊,都是各大面试官对我的灵魂拷问,希望也可以给大家带来一些帮助。

欲速则不达,欲达则欲速!

一、byte类型127+1等于多少

byte的范围是-128~127。

字节长度为8位,最左边的是符号位,而127的二进制为01111111,所以执行+1操作时,01111111变为10000000。

大家知道,计算机中存储负数,存的是补码的兴衰。左边第一位为符号位。

那么负数的补码转换成十进制如下:

一个数如果为正,则它的原码、反码、补码相同;一个正数的补码,将其转化为十进制,可以直接转换。

已知一个负数的补码,将其转换为十进制数,步骤如下:

  1. 先对各位取反;
  2. 将其转换为十进制数;
  3. 加上负号,再减去1;

例如10000000,最高位是1,是负数,①对各位取反得01111111,转换为十进制就是127,加上负号得-127,再减去1得-128;

二、数据库一般会采取什么样的优化方法?

1、选取适合的字段属性

  • 为了获取更好的性能,可以将表中的字段宽度设得尽可能小。
  • 尽量把字段设置成not null
  • 执行查询的时候,数据库不用去比较null值。
  • 对某些省份或者性别字段,将他们定义为enum类型,enum类型被当做数值型数据来处理,而数值型数据被处理起来的速度要比文本类型块很多。

2、使用join连接代替子查询

3、使用联合union来代替手动创建的临时表

注意:union用法中,两个select语句的字段类型要匹配,而且字段个数要相同。

4、事务

要么都成功,要么都失败。

可以保证数据库中数据的一致性和完整性。事务以begin开始,commit关键字结束。

如果出错,rollback命令可以将数据库恢复到begin开始之前的状态。

事务的另一个重要作用是当多个用户同时使用相同的数据源时,它可以利用锁定数据库的方式为用户提供一种安全的访问方式,这样就可以保证用户的操作不被其他的用户干扰。

5、锁定表

尽管事务是维护数据库完整性的一个非常好的方法,但却因为它的独占性,有时会影响数据库的性能,尤其是在大应用中。

由于在事务执行的过程中,数据库会被锁定,因此其它用户只能暂时等待直到事务结束。

有的时候可以用锁定表的方法来获得更好的性能,

共享锁:其它用户只能看,不能修改

lock table person in share mode;

对于通过lock table 命令主动添加的锁来说,如果要释放它们,只需发出rollback命令即可。

6、使用外键

锁定表的方法可以维护数据的完整性,但是它却不能保证数据的关联性,这个时候可以使用外键。

7、使用索引

索引是提高数据库查询速度的常用方法,尤其是查询语句中包含max()、min()、order by这些命令的时候,性能提高更为显著。

一般来说索引应该建在常用于join、where、order by的字段上。尽量不要对数据库中含有大量重复的值得字段建立索引。

8、优化的查询语句

在索引的字段上尽量不要使用函数进行操作。

尽量不要使用like关键字和通配符,这样做法很简单,但却是以牺牲性能为代价的。

避免在查询中进行自动类型转换,因为类型转换也会使索引失效。

三、项目中会有生产环境、测试环境等,问配置文件中该怎么配置

四、怎么的处理service的事务传播

Spring事务传播机制详解

五、说一下事务的隔离级别

数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。

六、Object常用方法

getClass、equals、hashcode、clone、wait、notify、notifyAll、

七、在线人员统计

通过监听session对象的方式来实现在线人数的统计和在线人信息展示,并且让超时的自动销毁。

对session对象实现监听,首先必须继承HttpSessionListener类,该程序的基本原理就是当浏览器访问页面的时候必定会产生一个session对象,当关闭该页面的时候必然会删除session对象。所以每当产生一个新的session对象就让在线人数+1,当删除一个session对象就让在线人数-1。

还要继承一个HttpSessionAttributeListener,来实现对其属性的监听。分别实现attributeAdded方法,attributeReplace方法以及attributeRemove方法。

sessionCreated//新建一个会话的时候触发,也可以说是客户端第一次喝服务器交互时触发。

sessionDestroyed//销毁会话的时候,一般来说只有某个按钮触发进行销毁,或者配置定时销毁。

HttpSessionAttributeListener有三个方法需要实现

  • attributeAdded//在session中添加对象时触发此操作 笼统的说就是调用setAttribute这个方法时候会触发的
  • attributeRemoved//修改、删除session中添加对象时触发此操作  笼统的说就是调用 removeAttribute这个方法时候会触发的
  • attributeReplaced//在Session属性被重新设置时

八、单点登录

  1. cookie方式,线程不安全、不跨域
  2. jsonp方式,线程安全,不跨域
  3. 重定向方式,线程安全,跨域,较繁琐

九、项目时如何发布的

  1. IDEA打包成jar包
  2. cmd命令打包成jar包
  3. 通过java -jar target/service_edu.jar命令启动springboot启动类。

【Spring Boot 21】Spring Boot 项目如何部署

十、Redis有哪些应用

  1. 用于缓存
  2. 高速读写场合,如秒杀,抢红包等高并发场景

十一、SpringMVC和SpringBoot的区别

  1. SpringMVC和SpringBoot都是Spring的衍生产品;
  2. Spring MVC是基于servlet的一个MVC框架,主要应用于web开发。
  3. Spring Boot解决的是Spring配置繁琐的问题,为简化开发而生;

十二、Spring IOC和AOP

IOC可以称为控制反转或依赖注入,通过引入IOC容器,利用依赖注入的方式,实现对象之间的解耦。

AOP是面向切面编程,在不改变原有逻辑的基础上,增加一些额外功能。

AOP适用于解决日志、事务、权限方面的问题,这种散布在各处的无关的代码称为横切,在OOP的设计中,它导致了大量代码的重复,而不利于各个模块的重用。

AOP是面向切面编程,将影响多个类的共同行为封装到一个可重用的模块,并将其命名为“Aspect”,即切面。

关于切面是将那些与业务无关,却被业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。

十三、beanFactory和factoryBean的区别

beanFactory是Spring关于容器的父接口,用来管理bean的接口,管理bean的注入和销毁;

factoryBean是Spring用来对beanFactory中的bean进行修饰的类,相当于装饰器模式;

十四、springboot项目中分为哪几个模块

  1. 公共方法模块
  2. 人员基本信息系统
  3. 安全监控模块
  4. 应急广播模块
  5. gis地图模块
  6. 视频监控模块
  7. 统计模块

十五、JSP取值的方式

  1. 通过表单提交,前台往后台传值,在后台使用set,get方法,可以直接获取。如果通过request.getParameter(paramName)去获取前台传过来的请求参数值。有name属性的表单才会生成请求参数,如果某个表单设置了disable=“disabled”,则该表单不会生成请求参数。
  2. EL表达式${param}
  3. jsp输出表达式 :

① 参数:<%=request.getParameter(paramName)%>

② 属性值:<%=request.getAttribute("attributeName")%>

十六、分页sql

无排序的版本:

SELECT * FROM (SELECT rownum AS rowno,w.* FROM ct_worker w WHERE rownum <=20) worker WHERE worker.rowno>10

有排序的版本:

SELECT * FROM (SELECT rownum AS rowno,w.* FROM (SELECT ctw.* FROM CT_WORKER ctw ORDER BY capid desc) w WHERE rownum <=20) worker WHERE worker.rowno>10

十七、分组sql

where使用在group by之前,where子句不能有分组函数;

group by 进行分组,having进行分组之后的过滤,having中可以使用聚合函数;

select t1.name 学生姓名,sum(t2.score) 总分,avg(t2.score) 平均分,max(t2.score) 最高分,min(t2.score) 最低分from t_student t1, t_score t2where t1.studentid = t2.studentidgroup by t1.name having sum(t2.score)>250;

十八、索引怎么定义,分哪几种

  1. b-tree索引,如果不建立索引的情况下,oracle就自动给每一列都加一个B 树索引;
  2. normal:普通索引
  3. unique:唯一索引
  4. bitmap:位图索引,位图索引特定于只有几个枚举值的情况,比如性别字段;
  5. 基于函数的索引

十九、Java多线程

1、线程的实现方式

(1)继承Thread类;

(2)实现Runnable接口;

该方式的优点:

可以避免由于java单继承带来的局限性,适合多个相同程序的代码去处理同一个资源的情况,把线程和程序的代码、数据有效分离,较好的体现了面向对象的设计思想。

2、线程生命周期

创建、就绪、运行、阻塞、死亡

3、线程控制

线程休眠sleep、线程加入join、线程礼让yield

二十、easyExcel如何实现

异步读取
新建一个  ExcelModelListener 监听类出来,并且 继承 AnalysisEventListener 类

package com.zh.oukele.listener;import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.zh.oukele.model.ExcelMode;import java.util.ArrayList;
import java.util.List;/****  监听器*/
public class ExcelModelListener extends AnalysisEventListener<ExcelMode> {/*** 每隔5条存储数据库,实际使用中可以3000条,然后清理list ,方便内存回收*/private static final int BATCH_COUNT = 5;List<ExcelMode> list = new ArrayList<ExcelMode>();private static int count = 1;@Overridepublic void invoke(ExcelMode data, AnalysisContext context) {System.out.println("解析到一条数据:{ "+ data.toString() +" }");list.add(data);count ++;if (list.size() >= BATCH_COUNT) {saveData( count );list.clear();}}@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {saveData( count );System.out.println("所有数据解析完成!");System.out.println(" count :" + count);}/*** 加上存储数据库*/private void saveData(int count) {System.out.println("{ "+ count +" }条数据,开始存储数据库!" + list.size());System.out.println("存储数据库成功!");}}

上一篇:如果当时这15道题能答好,现在应该已经被录取了(记一次面试的亲身经历 2020-7-23)

下一篇:Java面试题总结(绝对经典)

如果当时这20道题能答好,现在应该已经被录取了(记一次面试的亲身经历 2020-8-27)相关推荐

  1. 如果当时这15道题能答好,现在应该已经被录取了(记一次面试的亲身经历 2020-7-23)

    一.前情提要 今天请假面试,上午两家,下午三家(暂定两点钟A.三点半B.四点C),全军出击的赶脚,有一家公司感觉还可以,来这家面试还真是一波三折: ① 一个不认识的猎头推荐的C(今天上午11点给我打的 ...

  2. C语言编程课后训练,C语言编程课后训练20道题.doc

    C语言编程课后训练20道题 C语言编程课后训练20道题/*-------------------------------------------------------[程序填空]---------- ...

  3. 计算机网络精选20道题

    1.现有一个公司需要创建内部的网络,该公司包括工程技术部.市场部.财务部和办公室4个部门,每个部门约有20-30台计算机.试问: (1)若要将几个部门从网络上进行分开.如果分配该公司使用的地址为一个C ...

  4. 2022-中医基础-《阴阳 20问与答》

    阴阳 20问与答 什么是阴阳学说? 阴阳学说,属于中医古代哲学理论范畴,阴阳的对立统一是天地万物运动变化的根本规律.中医学以阴阳交感.对立.互根.消长.转化及自和规律,认识和说明生命健康和疾病. 什么 ...

  5. 【2021最新版】数据结构+算法面试题总结(9+20道题含答案解析)

    文章目录 1.栈(stack) 2.队列(queue) 3.链表(Link) 4.散列表(Hash Table) 5.排序二叉树 6. 前缀树 7.红黑树 8.B-TREE 9.位图 算法面试题 1. ...

  6. 加深Java基础,做了20道题选择题!简答题没做

    2015-03-16 17:13 269人阅读 评论(1) 收藏 举报  分类: 笔试(1)  版权声明:本文为博主原创文章,未经博主允许不得转载. 1,下列说法正确的是( A ) A )Java程序 ...

  7. 分式混合运算20道题_FAG剖分式调心滚子轴承的性能

    剖分式轴承作为重要的基础件之一,被广泛使用在许多领域中.剖分式调心滚子轴承主要使用在难于安装和拆卸的位置,降低轴承拆装的困难.这类轴承适合低速及使用环境比较恶劣的场合.轴承的方便安装拆卸,降低了机器和 ...

  8. 测试抑郁症的20道题(三)

    问题一:什么是"软件测试"? 1.出自(IEEE, 1986; IEEE, 1990). Software testing is the process of analyzing ...

  9. 真是恍然大悟啊!腾讯、网易必问的20道题Android面试题,架构师必备技能

    什么是Flutter? Flutter是Google推出并开源的移动应用程序(App)开发框架,主打跨平台.高保真.高性能.其采用Dart(官网.中文网)语言作为开发语言,开发者可以通过Dart语言开 ...

最新文章

  1. 一键解锁解题秘籍,从向作者提问开始
  2. SQL Server 2008_企业版和开发版产品密钥
  3. 用 Flask 来写个轻博客 (17) — MV(C)_应用蓝图来重构项目
  4. 【Linux】Linux用户、用户组、文件权限学习笔记
  5. 元类--用不上的先了解
  6. ApacheCN 学习资源汇总 2018.11
  7. 计算机软著研究生毕业,关于研究生推免工作科研成果和竞赛计分详细说明
  8. springboot banner.txt 在线制作
  9. anaconda升级sklearn版本
  10. Windows内核的基本概念
  11. 固态硬盘坏块修复工具_坏道和坏块什么区别?硬盘高级修复教程来了
  12. VB类计算机专业毕业设计题目
  13. 【VTK】装配体Assembly的使用
  14. LateX beamer 下的报错unknown CJK family \CJKsfdefault is being ignored
  15. esp8266使用TF卡并读写数据(基于arduino)
  16. python大赛对名_用100行Python爬虫代码抓取公开的足球数据玩(一)
  17. 可运营快递查询微信小程序源码
  18. 链路分析(Link analysis)
  19. PDF之父、Adobe联合创始人离世,乔布斯收购未果给了他第一桶金
  20. 树莓派系统、硬件更新

热门文章

  1. 如何解决Login failed for user: AccountName这个错误
  2. Python基础(06)——集合(set、frozenset)
  3. 【数据结构】二叉树的概念 | 满二叉树和完全二叉树 | 二叉树的基本性质
  4. 设计一个8位双向循环移位寄存器vhdl
  5. Python学习 | 10个爬虫实例
  6. 串口通信和RS485
  7. ThinkPad 双显卡 NVidia + 集显 切换
  8. win7安装apache服务失败,win7系统安装phpnow服务[Apache_pn]提示失败的解决方法
  9. 虚幻4毛发系统_虚幻4 半透明材质做彩色玻璃、塑料盒性能对比
  10. 优雅地 Hack 一台黑苹果 (HP 战 66)