Java 面试系列(一)

Java的Comparable与Comparator接口

Comparable接口下只有一个方法 int compareTo(T o) 用于提供排序所需要的比较逻辑。 实现这个接口的类,其对象都可以通过调用Collections.sort()或者Arrays.sort()进行排序

Comparator是策略模式的一种实现,体现了将类和排序算法相分离的原则。

Java中TreeMap和HashMap区别

HashMap:

  • 它是一个基于哈希表的实现。 它扩展了AbstractMap类并实现了Map接口。 HashMap基于散列原理工作。遍历时,
  • 取得数据的顺序是完全随机的,
  • 最多只允许一条记录的键为Null;允许多条记录的值为 Null
  • 不支持线程的同步,如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步能力,或者使用ConcurrentHashMap

TreeMap:实现SortMap接口,它根据其键的自然顺序对其条目进行排序(升序),或者如果用户在构造时提供,则更好地使用比较器

REST中get与post区别

GET: 从服务器获取资源

  • GET请求标准上是幂等的(用户应该认为请求是安全的-资源不会被修改,这里所以说应该是服务器端并不保证资源不会被修改)
  • GET请求可以被浏览器缓存;响应也可以被缓存(根据缓存头信息来处理)
  • GET请求的数据都在URL中,可以方便都从浏览器中获取数据(因此不能携带诸如密码的明文数据)
  • GET请求的长度会有限制(比如IE的路径总长度需小于2048个字符)
  • GET请求的数据只能包含ASCII字符

POST: 发布新资源

  • POST请求标准上不是幂等的(用户应该认为请求是有副作用的-可能会导致资源修改)
  • POST请求URL可以被浏览器缓存,但是POST数据不会被缓存;响应可以被缓存(根据缓存头信息来处理)
  • POST请求没有长度限制,可以用来处理“请求数据”很大的场景(只要不超过服务器端的处理能力)
  • POST请求的数据不限于ASCII字符,可以包含二进制数据

spring与springMVC区别

Spring,一般指代的是Spring Framework,它是一个开源的应用程序框架,提供了一个简易的开发方式,通过这种开发方式,将避免那些可能致使代码变得繁杂混乱的大量的业务/工具对象,说的更通俗一点就是由框架来帮你管理这些对象,包括它的创建,销毁等,比如基于Spring的项目里经常能看到的Bean,它代表的就是由Spring管辖的对象。

Spring MVC是Spring的一部分,Spring 出来以后,大家觉得很好用,于是按照这种模式设计了一个 MVC框架(一些用Spring 解耦的组件),主要用于开发WEB应用和网络接口,它是Spring的一个模块,通过Dispatcher Servlet, ModelAndView 和 View Resolver,让应用开发变得很容易

HBASE rowkey设计

hbase 中的行是以 rowkey 的字典序排序的,这种设计优化了scan 操作,可以将相关的行以及会被一起读取的行存取在临近位置,便于 scan

rowkey是一个二进制码流,rowkey的长度被很多开发者建议说设计在10~100个字节,不过建议是越短越好,不要超过16个字节(64Kb)

rowkey 生成规则

  • 加盐: 在rowkey 的前面增加随机数。具体就是给 rowkey 分配一个随机前缀 以使得它和之前排序不同。分配的前缀种类数量应该和你想使数据分散到不同的 region 的数量一致。

  • 哈希 哈希会使同一行永远用同一个前缀加盐。哈希也可以使负载分散到整个集群,但是读却是可以预测的。使用确定的哈希可以让客户端重构完成的 rowkey,使用Get 操作获取正常的获取某一行数据。

  • 翻转时间戳 一个常见的数据库处理问题是快递获取数据的最近版本,使用翻转的时间戳作为rowkey的一部分对这个问题十分有用,可以将Long.MAX_VALUE - timestamp追加到key的末尾,例如:[key][reverse_timestamp]

Hbase 过滤器

CompareFilter: 是高层的抽象类

RowFilter,FamliyFilter,QualifierFilter,ValueFilter: 行,列组,列,值等的过滤

SingleColumnValueFilter: 单值过滤器是以特定“列”的“值”为过滤内容,值得是单列的值。而行值过滤器比较的是所有列的值。与其进行比较。

PrefixFilter: 前缀过滤器将会过滤掉不匹配的记录,过滤的对象是主键的值。

Java8 Stream

Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合进行各种便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation),Stream 不是一种数据结构,并不保存数据。

中间转换操作(节选)

  • map: 处理迭代过程中的每个元素,每个输入元素,都按照规则转换成为另外一个元素
  • flatMap: 与map的区别在于可以把多维集合压平成另一个Stream进行输出
  • filter: 如果返回 true ,元素被留下进行后续操作
  • distinct: 去重
  • peek: 与 map 的不同在于其没有返回值,可以处理每个元素,但是结果不会传递下去

转载于:https://juejin.im/post/5cab0020e51d452b1d550908

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.1 JAVA面试题解惑系列(一)——类的初始化顺序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 1.2 JAVA面试题解惑系列(二)——到底创建了几个String对象? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8 1.3 JAVA面试题解惑系列(三)——变量(属性)的覆盖 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16 1.4 JAVA面试题解惑系列(四)——final、finally和finalize的区别 . . . . . . . . . . . . . . . . . . . . . . . . . . . .22 1.5 JAVA面试题解惑系列(五)——传了值还是传了引用? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 1.6 JAVA面试题解惑系列(六)——字符串(String)杂谈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36 1.7 JAVA面试题解惑系列(七)——日期和时间的处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46 1.8 JAVA面试题解惑系列(八)——聊聊基本类型(内置类型) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63 1.9 JAVA面试题解惑系列(九)——继承、多态、重载和重写 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80 1.10 JAVA面试题解惑系列(十)——话说多线程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86 1.11 JAVA面试题解惑系列(十一)——这些运算符你是否还记得? . . . . . . . . . . . . . . . . . . . . . . . . . .103
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值