Java面试题

基础知识

  • HTTP协议内容
    基于TCP
    请求方法:GET PUT POST
    常见返回码:200 400 500
    常见HTTP头:Content-Type Authorization
  • 快速排序(quick sort)基本过程
  • 正则表达式(regular expression)匹配字符串开头结尾
    ^匹配开头,$匹配结尾

java

  • 堆和栈的区别,哪些放堆哪些放栈
    堆:new创建出来的对象
    栈:方法中的基础数据类型,对象引用
  • abstract抽象类和抽象方法
    什么场景会用到
    抽象类不能被实例化,实例化在子类中完成(为什么)
    如果一个类包含抽象方法,该类必须被限定为抽象的。(编译器报错)
    抽象类可以有构造方法,而接口不能
    抽象类的方法可是是protected、private,或无(表示包内可见);而一个接口的方法只能是 public
  • Java1.7/1.8的新feature
    项目中用到了哪些
  • 如何保证打开的资源被关闭
    try fianlly
    try with resource(1.7新语法)
  • 常用设计模式
    解释订阅者模式(Observer Pattern),工厂模式(Factory)
    什么场景会用到
  • 构造函数参数比较多,且大多为可选参数
    可以使用Builder Pattern
  • ArrayList和LinkedList区别
    ArrayList: 随机访问快,插入慢(需要拷贝)
    LinkedList: 插入快
  • HashMap的实现
    bucket数组,从key的hash定位bucket的index
    冲突时用链表连接
  • String StringBuilder StringBuffer的差异
    String is immutable whereas StringBuffer and StringBuider are mutable classes.
    StringBuffer is thread safe and synchronized whereas StringBuilder is not,
    thats why StringBuilder is more faster than StringBuffer.
    String concat + operator internally uses StringBuffer or StringBuilder class.
    String会造成内存碎片
  • 发生exception时什么时候应该catch了自己处理?
    根据接口封装而定,看exception是不是接口自己应该处理的错误
  • 线程同步怎么做
    synchronized有哪几种用法
  • Future 和 CompletableFuture的区别
    thenApply()、thenAccept()、thenRun(),类似于JS的promise
  • Spring线程模型
    处理不同请求的线程是不是同一个(不是)
    对应的Controller是不是同一个(默认设置是的)
  • Redis的特点,为什么流行
    可扩展成集群
    速度快(原因是什么?内存访问)
    单线程

数据库

  • 索引作用
  • 联合索引的顺序
    联合索引:一个索引包含多个字段
    最左前缀匹配原则,Index(A,B,C)只有查询A或者AB或者ABC才会命中索引,查询AC不会
  • 如何判断一个查询是否用到索引
    mysql的explain语句
  • 事务(transaction)概念和作用
  • 事务的隔离级别概念
    不需要能说出名称,只需要有个概念
  • mysql的where statement,优先级是什么,如何优化where A like “%” And B = xxx
    If your search condition contains only AND operators, your query will run faster if you put
    the conditions least likely to be true first.
    If col1=‘A’ is less likely than col2=‘B’ then WHERE col1=‘A’ AND col2=‘B’ is faster than WHERE col2=‘B’ AND col1=‘A’
    This logic depends on your DBMS’s optimizer reading WHERE clauses from left to right, which most do.
    Oracle’s cost-based optimizer (as opposed to its rule-based optimizer), however, reads right to left.

git/svn

  • 什么情况下开分支
  • 命令行会不会

linux

  • 基本命令熟悉程度1-5自评
  • 管道的概念

脚本

  • 除了java以外会不会哪个脚本语言

ElasticSearch相关问题

  • ES和关系数据库相比,主要是查询效率比较快,而且能进行全文文本搜索,并且能对结果进行相关性排序。通过按照时间来创建索引,也类似数据库分片
  • ES查询默认值返回10条数据,若要返回多条可以使用size
  • ES最大返回记录数据 size+from不能大于1w,否则会报错。若想查询1w条以后,可以设置index.max_result_window大于1w条。
  • ES的term聚合(类似sql的group by),默认返回的也是前10个聚合。若要返回全部,可以将size设置为0.
  • ES查询条件数量也 不能超过1024个
  • ES的数据更新,默认1s后才能被搜到,若想插入的数据及时被搜索,可以在数据插入后,调用update方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值