本人是二本大三学生,下半年大四。暑假在上海这边找实习工作,面了几家公司,所问到的问题记录在下面。
因为是在校生,没任何实习经历,一般找我面试的都是小公司,一般问的比较简单,甚至还有看了简历叫我直接去上班不用面试的(因为在学校获得了一些竞赛的证书而且没毕业,面试官问也就是CRUD的工作觉得没意思)。一般过去都是先做一套题目,或者叫你写几个接口,然后再开始面试问些问题。问的问题Java基础比较多。
主要提供题目,答案仅供参考。
不能,String类被final修饰。
valueOf(),substring(),indexOf(),startsWith(),split(),toCharArray(),equals(),toUpperCase(),toLowerCase()…
String底层数组实现,拼接字符串很慢并且耗性能。
StringBulider与StringBuffer效率很高,StringBulider>StringBuffer>String
StringBulider非线程安全,StringBuffer线程安全
用final修饰一个类的时候,表示这个类不能被继承,要注意的是被final修饰的类,它的成员方法也都会被隐式的指定为final方法。
用final修饰一个方法的时候,该方法不能被重写
用final修饰一个变量时,这个变量不能被更改。该变量必须在定义的时候被初始化。如果修饰的成员变量是引用数据类型,表示引用地址不能改变,但是引用所指向的对象的里面的内容还是可以改变的。
Map实现类调用entrySet方法获得一个Entry类型的Set,通过遍历这个Set集合获取Entry调用getKey或者getValue获取值
数组加链表(1.8以前),1.8之后添加了红黑树,基于hash表的map接口实现,
阈值(边界值)> 8 并且桶位数(数组长度)大于 64,才将链表转换为红黑树,变为红黑树的目的是为了高效的查询。
通过调用key的hashCode方法获取哈希值找到存放的数组下标,通过遍历此位置的key与插入的key通过equals比较,如果已存在则替换值,不存在则插入进来。
synchronized关键字和Lock接口的实现类
实现Runable接口、继承Thread类
加载类—>实例化(为对象分配空间)—>初始化(为对象的属性赋值)—>请求响应(服务阶段)—>销毁
Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。
而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。
JSP侧重于视图,Servlet主要用于控制逻辑
Servlet更多的是类似于一个Controller,用来做控制。
在Controller类的方法下使用这个注解,作⽤就是映射URL路径,将http的请求地址映射到控制器。
返回值交给视图解析器解析,如果配合@ResponseBody则返回JSON或者XML数据
使用@Transactional注解,可指定隔离等级、传播等级
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。
Isolate 隔离级别 * 脏读 不可重复读 幻(虚)读 READ UNCOMMITTED 有 有 有 (读未提交) READ COMMITTED. 无 有 有 (读已提交) REPEATABLE READ 无 无 有 (可重复读) SERIALIZABLE 无 无 无 (串行化 )
使用order by <关键字> asc/desc 默认asc
第一范式:每个列都不可以再拆分。
第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。
第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。
Redis五种数据类型分别是string(字符串),hash(哈希),list(列表),set(集合)及sortset(有序集合
短期内,大量的key过期,导致缓存失效,数据库访问量突增增导致崩溃。