1.final类型有什么作用
答:final可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个常量不能被重新赋值。
2.两个对象比较要实现哪些方法。
答:要实现equels 和 hashCode 方法
3.为什么要实现hashcode方法
答:hashCode 顾名思义是一个“散列值码”
散列值,并不能表现其唯一性,但是有离散性,其意义在于类似于进行hashMap等操作时,加快对象比较的速度,进而加快对象搜索的速度。
(1)hashCode()方法存在的主要目的就是提高对象比较效率。
(2)在集合中判断两个对象相等的条件,其实无论是往集合中存数据,还是从集合中取数据,包括如果控制唯一性等,都是用这个条件判断的,条件如下:
首先判断两个对象的hashCode是否相等,如果不相等,就认为这两个对象不相等,就完成了。如果相等,才会判断两个对象的equals()是否相等,如果不相等,就认为这两个对象不相等,如果相等,那就认为这两个对象相等。
4.list有那几种遍历方式
答:有两种(for, Iterator)
5.list删除元素怎么删
答:有三种删除方法
<!--[if !supportLists]--> 使用普通的for循环删除,内部调整索引
for (int i =0; i < datas.size(); i++){
if (datas.get(i).isSelect()) {
datas.remove(i);
i--;
}
}
<!--[if !supportLists]-->(2)使用倒序for循环删除
for (int i = datas.size() - 1; i >= 0; i--) {
if (datas.get(i).isSelect()) {
lists.remove(i);
}
}
<!--[if !supportLists]-->(3)使用迭代器删除
Iterator<UserBean> iterator = datas.iterator();
while(iterator.hasNext()){
UserBean user= iterator.next();
if(user.isSelect()){
// 注意: 不能用list的remove方法.
// datas.remove(next);
// 使用迭代器中的remove()方法,可以删除元素.
iterator.remove();
}
}
6.hashmap 的数据结构什么样的。(https://www.jianshu.com/p/adc3df4ae4ec)
答:数组+链表。java8以后增加红黑二叉树,为了优化链表过长时的查找速度。(这里简单的介绍一下红黑二叉树的特点,及优点。链表转红黑树的时机就可以了)
7. HashMap怎么通过key判断索引位置的?
答:通过Hash算法,获取key的Hash值,通过indexFor算法计算真实索引
// 获取key对应的value
public V get(Object key) {
if (key == null)
return getForNullKey();
// 获取key的hash值
int hash = hash(key.hashCode());
// 在“该hash值对应的链表”上查找“键值等于key”的元素
for (Entry<K,V> e = table[indexFor(hash, table.length)];
e != null;
e = e.next) {
Object k;
if (e.hash == hash && ((k = e.key) == key || key.equals(k)))
return e.value;
}
return null;
}
indexFor算法的精髓
static int indexFor(int h, int length) {
return h & (length-1);
}
8. servlet 多个filter 的执行顺序是怎么样的
之前我们控制多个filter的执行顺序是通过web.xml中控制filter的位置来控制的,放在上面的会比放在下面的先执行,如下“用户登录检查过滤器”会比“接口日志过滤器”先执行
但是当我们使用@WebFilter注解的时候发现注解里面没有提供可以控制执行顺序的参数。
通过实践发现如果想要控制filer的执行顺序可以通过控制filter的文件名来控制
比如:
UserLoginFilter.java 和 ApiLog.java 这两个文件里面分别是“用户登录检查过滤器”和“接口日志过滤器”,因为这两个文件的首字母A排U之前,导致每次执行的时候都是先执行“接口日志过滤器”再执行“用户登录检查过滤器”,所以我们现在修改两个文件的名称分别为
Filter0_UserLogin.java
Filter1_ApiLog.java
这样就能先执行“用户登录检查过滤器”再执行“接口日志过滤器”
9. servlet,过滤器,监听器,拦截器的区别(https://www.cnblogs.com/ryelqy/p/10286216.html)
答:(1)servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,
可以动态生成web页面它工作在客户端请求与服务器响应的中间层;
(2)filter:filter是一个可以复用的代码片段,可以用来转换HTTP请求,响应和头信息。
它不能产生一个请求或者响应,它只是修改对某一资源的请求或者响应;
(3)listener:监听器,通过listener可以坚挺web服务器中某一执行动作,并根据其要求作出相应的响应。
就是在application,session,request三个对象创建消亡或者往其中添加修改删除属性时自动执行代码的功能组件;
(4)interceptor:拦截器是对过滤器更加细化的应用,他不仅可以应用在service方法前后还可以应用到其他方法的前后
拦截器;
(5)servlet,filter,listener是配置到web.xml中,interceptor不配置到web.xml中,struts的拦截器配置到struts。xml中。
spring的拦截器配置到spring.xml中;
10.http请求分为哪几部分.
答:(请求行、请求头、请求体)
请求行
请求方法字段、URL字段和HTTP协议版本
例如:GET /index.html HTTP/1.1
get方法将数据拼接在url后面,传递参数受限
请求方法:
GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT
请求头(key value形式)
User-Agent:产生请求的浏览器类型。
Accept:客户端可识别的内容类型列表。
Host:主机地址
请求数据
post方法中,会把数据以key value形式发送请求
11.http haerd 有哪些属性
12.http有哪些返回状态
2XX 成功
200 OK 表示请求被服务器正常处理
204 No Content 表示请求已成功处理,但是没有内容返回
206 Partial Content 表示服务器已经完成了部分GET请求
3XX 重定向
301 Moved Permanently 永久重定向,表示请求的资源已经永久的搬到了其他位置 就是说资源已经被分配了新的URI
302 Found 临时重定向,表示请求的资源临时搬到了其他位置 请求的资源暂时被配到到了新的URI
303 See Other 表示请求资源存在另一个URI,应使用GET定向获取请求资源
304 Not Modified 表示客户端发送附带条件的请求(GET方法请求报文中的IF…)时,条件不满足 返回304时,不包含任何响应主体
307 Temporary Redirect 临时重定向,和302有着相同含义 尽管302标准禁止POST变为GET,但没人听他的
4XX 客户端错误
400 Bad Request 表示请求报文存在语法错误或参数错误,服务器不理解
401 Unauthorized 表示发送的请求需要有HTTP认证信息或者是认证失败了
403 Forbidden 表示对请求资源的访问被服务器拒绝了
404 Not Found 表示服务器找不到你请求的资源
5XX 服务器错误
500 Internal Server Error 表示服务器执行请求的时候出错了
502 网关错误
503 Service Unavailable 表示服务器超负载或正停机维护,无法处理请求
13. http get post 请求有哪些区别
答:
GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母或数字,则原样发送;如果是空格,转换为+;如果是中文或其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII码值。而与之对应的,POST把提交的数据放置在HTTP包的包体中,文章最下面将会有代码示例。
POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面GET提到的“安全”不是同个概念。上面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的Security的含义。比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为:(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击(CSRF,跨站请求伪造,也被称为:one click attack/session riding)。
14.数据库left, right, inner,full是什么链接的
左链接 left join on (左集)
右链接 right join on (右集)
内链接 inner join (交集)
全链接 full join (并集)
15.sql语句怎么优化
1.字段类型选择:
A:尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNED
B:VARCHAR的长度只分配真正需要的空间
C:使用枚举或整数代替字符串类型
D:尽量使用TIMESTAMP而非DATETIME
E:单表不要有太多字段,建议在20以内
F:避免使用NULL字段,很难查询优化且占用额外索引空间
2. 选择合适的索引列,选择在where,group by,order by,on从句中出现的列作为索引项,对于离散度不大的列没有必要创建索引。
主键已经是索引了,所以primay key 的主键不用再设置unique唯一索引
索引类型
主键索引 (PRIMARY KEY)
唯一索引 (UNIQUE)
普通索引 (INDEX)
组合索引 (INDEX)
全文索引 (FULLTE
16.介绍一下explain
EXPLAIN SELECT查询用来跟踪查看效果:
使用EXPLAIN关键字可以知道MySQL是如何处理SQL语句的。可以帮我们分析查询语句或是表结构的性能瓶颈。
EXPLAIN的查询结果还会显示索引主键被如何利用的,数据表是如何被搜索和排序的。
id:选择标识符
select_type:表示查询的类型。
table:输出结果集的表
partitions:匹配的分区
type:表示表的连接类型
possible_keys:表示查询时,可能使用的索引
key:表示实际使用的索引
key_len:索引字段的长度
ref:列与索引的比较
rows:扫描出的行数(估算的行数)
filtered:按表条件过滤的行百分比
Extra:执行情况的描述和说明
Type字段:
对表访问方式,表示MySQL在表中找到所需行的方式,又称“访问类型”。
常用的类型有: ALL、index、range、 ref、eq_ref、const、system、NULL(从左到右,性能从差到好)
ALL:Full Table Scan, MySQL将遍历全表以找到匹配的行
index: Full Index Scan,index与ALL区别为index类型只遍历索引树
range:只检索给定范围的行,使用一个索引来选择行
ref: 表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值
eq_ref: 类似ref,区别就在使用的索引是唯一索引,对于每个索引键值,表中只有一条记录匹配,简单来说,就是多表连接中使用primary key或者 unique key作为关联条件
const、system: 当MySQL对查询某部分进行优化,并转换为一个常量时,使用这些类型访问。如将主键置于where列表中,MySQL就能将该查询转换为一个常量,system是const类型的特例,当查询的表只有一行的情况下,使用system
NULL: MySQL在优化过程中分解语句,执行时甚至不用访问表或索引,例如从一个索引列里选取最小值可以通过单独索引查找完成。
相关推荐
面试北京XX数通总结 1 1 总括 1 1.1 面试时间 1 1.2 公司概况 1 1.3 老板疼点 1 2 如果入职 2 2.1 公共库 2 2.2 层次划分 2 2.3 设计与实现分离 2 3 关于外包 2 3.1 他们的期望 2 4 关于培训 3 5 建议 3 6 最后的...
总结来说,XX有限公司的面试记录表是一份全方位评估应聘者的工具,它确保公司在招聘过程中能做出客观、全面的决策。通过这样的面试流程,公司能够找到最适合的人才,同时也为员工提供了展示自我和证明能力的平台。
通过阅读“net面试.doc”、“NET笔试题.doc”、“XX公司.net机试题.doc”、“NET重点.doc”和“面试汇总.doc”这些文档,你可以系统性地复习和准备以上各个方面的知识,提升你的.NET面试成功率。同时,实践项目经验...
以下是对HTTP面试总结的一些关键知识点: 1. **HTTP基本概念**: - HTTP是无状态的,每次请求之间没有关联,为了保持状态,通常会用到Cookie和Session。 - HTTP是基于TCP/IP协议之上的应用层协议,通过TCP连接...
【XX有限公司面试记录表】是人力资源部门在招聘过程中常用的一个工具,主要用于系统地评估和记录应聘者的各项能力和表现。此表格的设计旨在确保招聘过程的公正、客观和专业,以找到最符合公司需求的人才。 首先,...
### 人力资源部XX年度工作总结及XX年度工作规划 #### 一、201x年度工作总结 ##### (一)建立健全合法规范的人力资源管理制度 1. **建立绩效导向的薪酬体系**: - 在201x年,人力资源部重点推进了绩效导向的薪酬...
【XX公司行政管理制度详解】 XX公司的行政管理制度涵盖了人事管理和行政管理两大核心领域,旨在规范公司运作,提升组织效率。此制度以《XX公司管理制度》和《XX公司员工守则》为基础,由总经理、公司管理中心、行政...
【XX年人力资源部工作总结】 XX年,人力资源部在公司品牌运营年的工作中扮演了关键角色,主要任务是招聘优秀人才、改革薪酬制度以及优化激励机制。这一年,公司员工总数达到68人,包括硕士及以上学历8人,本科32人...
2. 解析`<mapping resource="com/xx/User.hbm.xml"/>`,将实体类映射到数据库表。 3. 使用配置信息构建SessionFactory,SessionFactory是线程安全的,是所有Session的工厂。 4. 打开Session,Session是执行数据库...
公司人力资源部的年终工作总结展示了20XX年公司在人力资源管理方面的各项成就与挑战。在这个年度,人力资源部成功地建立了和健全了公司的人力资源管理系统,确保了工作的科学化和规范化,并完成了年度目标。以下是对...
【XX公司招聘体系】 广州XX电子科技有限公司的招聘体系旨在构建一套科学且完整的流程,以吸引和保留优质人才,确保公司的稳定和健康发展。该体系融合了行业内的最佳实践,遵循了四大设计原则,并设定了明确的目标,...
总结来说,XX集团公司的校园招聘方案是一套系统的人力资源管理策略,旨在吸引、选拔和培养优秀的高校毕业生,为公司的持续发展注入新的活力。通过科学的流程和方法,确保招聘过程的公平、公正、有效。
### 计算机网络面试常考题总结 #### HTTP协议请求方法 HTTP协议定义了与服务器交互的不同方法,包括但不限于: - **GET**:请求获取指定资源的信息。 - **POST**:向指定资源提交数据进行处理请求(例如提交表单...
【xx天津社区工作者面试技巧】 面试是求职过程中至关重要的一环,尤其对于天津社区工作者的职位,面试不仅是评估应聘者专业技能的机会,更是考察其人际沟通、应变能力和责任感的重要环节。以下是一些针对天津社区...
5. **JVM调优**:通过JDK自带的JConsole、VisualVM等工具监控JVM状态,调整-Xms、-Xmx、-Xss、-XX:NewRatio等参数优化性能。 6. **JVM内存溢出**:常见的内存溢出错误有`OutOfMemoryError`,如堆溢出、栈溢出、 ...
以下是根据提供的内容总结的几个关键知识点: 1. **兴趣与热情**:展示你对计算机领域的热爱,如对编程的痴迷,特别是对特定语言或技术的喜好。这表明你有强烈的内在驱动力去学习和解决问题。 2. **实践经验**:...
这篇实习总结主要涵盖了作者在2016年暑假期间在联想武汉有限公司的实习经历。通过这次实习,作者对联想品牌有了更深入的理解,从产品、销售、企业文化等多个方面获得了宝贵的经验。 首先,作者提到联想作为国内知名...
XX事业单位的面试技巧和注意事项是求职者成功的关键因素。面试不仅是对专业知识的考察,更是对个人综合素质的评估。以下是对面试技巧和注意事项的详细解读: 首先,面试中的行为举止至关重要。进入考场时,应表现出...