java面试笔记 持续更新

记录一下最近面试遇到的问题,持续更新ing

电话面试:
1 nio不是很熟

http://ifeve.com/java-nio-all/

2 kafka中间件的好处有什么  -> 可靠性 -> 它是如何保障它的可靠性

http://www.importnew.com/24973.html

3 redis集群用过嘛

4 hello world 做了什么?

编译,即把我们写好的java文件,通过javac命令编译成字节码,也就是我们常说的.class文件。

运行,则是把编译声称的.class文件交给Java虚拟机(JVM)执行。

5 常用gc算法 ->

1)引用计数法 -> 存在循环引用的缺陷 -> 针对其缺陷 -> 根搜索算法、

2)标记清除算法 -> 效率低 空间碎片 -> 复制算法 -> 较多的复制效率很低 -> 标记整理算法

3)分代回收法 这种算法并没有什么新的思路,只是根据对象的存活周期的不同,将内存划分为几块。一般是把java堆分成新生代和老年代,这样就可以根绝各个年代的特点采取最适当的收集算法。在新生代中,每次垃圾回收时都发现大批对象的死去,只有少量存活,那就选用复制算法,只需要付出少量存活对象的复制成本就可以完成收集。而老年代中因为对象存活率高,没有额外空间对它进行分配担保,就必须使用”标记-清理”或者“标记-整理”算法来进行回收。

6 一个请求中间都做了什么
7 SpringBoot用了哪些设计模式 xml和注解的bean统一管理是什么设计模式
8 你平时都用了哪些设计模式,为什么要用它
9 10亿个数据的业务要如何处理
10 mysql的版本是什么?
11 常用的数据结构是什么?-> ArrayList HashMap

-> hashMap底层是什么?

-> 数组链表红黑树

-> 为什么要用红黑树

-> 性能好相对于链表每个节点减少一半的可能
12 常用的orm模型框架是什么 -> mybatis -> 原理?
13 你平时用过哪些异步框架?
14 内存溢出如何排查?
15 一个发生概率为1%的问题要如何调查?
16 你平时如何做性能优化的?
17 平时遇到过慢sql嘛? 如何优化的?
18 用jdk几? -> 8 -> 有哪些新特性?
19 redis为什么比数据库快?
20 redis如何持久化?
21 一个增强for循环运行期间删掉一个元素会怎样?
22 threadLocal

当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,每个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本,是线程隔离的。线程隔离的秘密在于ThreadLocalMap类(ThreadLocal的静态内部类)

线程局部变量是局限于线程内部的变量,属于线程自身所有,不在多个线程间共享。Java 提供 ThreadLocal

类来支持线程局部变量,是一种实现线程安全的方式。但是在管理环境下(如 web

服务器)使用线程局部变量的时候要特别小心,在这种情况下,工作线程的生命周期比任何应用变量的生命周期都要长。任何线程局部变量一旦在工作完成后没有释放,Java

应用就存在内存泄露的风险。

ThreadLocal的方法:void set(T value)、T get()以及T initialValue()。

ThreadLocal是如何为每个线程创建变量的副本的:

首先,在每个线程Thread内部有一个ThreadLocal.ThreadLocalMap类型的成员变量threadLocals,这个threadLocals就是用来存储实际的变量副本的,键值为当前ThreadLocal变量,value为变量副本(即T类型的变量)。初始时,在Thread里面,threadLocals为空,当通过ThreadLocal变量调用get()方法或者set()方法,就会对Thread类中的threadLocals进行初始化,并且以当前ThreadLocal变量为键值,以ThreadLocal要保存的副本变量为value,存到threadLocals。然后在当前线程里面,如果要使用副本变量,就可以通过get方法在threadLocals里面查找。

总结:

a、实际的通过ThreadLocal创建的副本是存储在每个线程自己的threadLocals中的

b、为何threadLocals的类型ThreadLocalMap的键值为ThreadLocal对象,因为每个线程中可有多个threadLocal变量,就像上面代码中的longLocal和stringLocal;

c、在进行get之前,必须先set,否则会报空指针异常;如果想在get之前不需要调用set就能正常访问的话,必须重写initialValue()方法

23 线程池
24 给你四个线程 一个主线程 如果并行的处理任务
25 hashcode 方法 和 equals方法

26 问:对象的比较,怎么判断两个对象相等?

答:equals方法

问:Integer里Integer a = new Integer(123), Integer b = 123, a==b?

答:不相等

问:Integer里Integer a = new Integer(123), Integer b = new Integer(123), a==b?

答:不相等

问:Integer里Integer a = new Integer(123), int b = 123, a==b?

答:相等

27 问:常用的List实现有哪些?

答:ArrayList 和 LinkedList, CopyOnWriteArrayList

问:ArrayList 和 LinkedList的区别

答:ArrayList是array实现的,读更快;LinkedList是链表实现的,写更快

问:ArrayList怎么扩容的,扩容到多大?

答:申请空间,copy一份出去,1.5倍

问:ConcurrentHashMap原理

答:线程同步基于Segment加锁,效率比对整个HashMap加锁效率高

问:ConcurrentHashMap怎么实现线程安全

答:分段锁

问:ConcurrentHashMap默认多少个分段锁

答:2的n次方

问:与hashtable区别

答:HashTable用synchronized保证线程安全,竞争激烈情况下效率低下

问:  ConcurrentHashMap是如何解决并发冲突的

答: 使用Segment在每个桶上加锁

问:volatile的作用

答:可见性,防止CPU指令重排

问:原子类atomicinteger

答:cas

问:CAS原理

答:campare and swap 乐观锁

28 数据库不同的存储引擎 

https://www.cnblogs.com/shijiaqi1066/p/3857808.html

https://www.cnblogs.com/sunsky303/p/8274586.html

29 redis的数据结构 及存储策略 -> String,Hash,Set,List,SortedSet,pub/sub,Transaction

->

30 设计一个线程池需要关心什么?

31 redis String是如何存储的?如何扩容?

32 常见线程池

①newSingleThreadExecutor

单个线程的线程池,即线程池中每次只有一个线程工作,单线程串行执行任务

②newFixedThreadExecutor(n)

固定数量的线程池,没提交一个任务就是一个线程,直到达到线程池的最大数量,然后后面进入等待队列直到前面的任务完成才继续执行

③newCacheThreadExecutor(推荐使用)

可缓存线程池,当线程池大小超过了处理任务所需的线程,那么就会回收部分空闲(一般是60秒无执行)的线程,当有任务来时,又智能的添加新线程来执行。

④newScheduleThreadExecutor

大小无限制的线程池,支持定时和周期性的执行线程

33 你最得意的项目是什么?你在项目中担当着什么样的角色?

最得意的应该属于绘制海报balabalabala ,现在在团队应该属于基层的中级开发人员

34 数据库不同的存储引擎

35 redis 支持的数据结构有哪些

redis 支持五种数据类型

string 字符串

hash 哈希

list 列表

set 集合

sorted set 有序集合

-> String是如何存储的?

https://www.cnblogs.com/idiotgroup/p/5450157.html

36 类加载的过程

类加载的过程主要分为三个部分:

加载

链接

初始化

而链接又可以细分为三个小部分:

验证

准备

解析

https://blog.csdn.net/ln152315/article/details/79223441

37 数据库事务隔离级别

https://blog.csdn.net/ln152315/article/details/79156655

38 线程池设计思路

https://www.cnblogs.com/chinaifae/p/10193774.html

代码面试:

/** 评测题目 1

* 请用java实现以下shell脚本的功能

* cat /home/admin/logs/webx.log | grep "Login" | uniq -c | sort -nr | head -n 10

* 假设webx.log 内容以下:

      Login2

      Login1

      Login1

      Login3

      uniq -c 的结果:

      1 Login2

      2 Login1

      1 Login3

**/

import java.nio.charset.Charset;

import java.nio.file.Files;

import java.nio.file.Paths;

import java.util.Comparator;

import java.util.Optional;

import java.util.function.Function;

import java.util.stream.Collectors;

public class Demo {

    public static void main(String[] args) throws Exception {

        Optional.of("/home/admin/logs/webx.log")

                .map(Paths::get)

                .map(e -> {

                    try {

                        return Files.lines(e, Charset.defaultCharset())

                                .filter(s -> s.contains("Login"))

                                .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

                    } catch (Exception err) {

                        return null;

                    }

                })

                .ifPresent(map -> map.keySet()

                        .parallelStream()

                        .sorted(Comparator.comparing(map::get).reversed())

                        .limit(10)

                        .forEach(e -> System.out.println(map.get(e) + " " + e)));

    }

}

/**

* 问1 如果内存不足怎么办?问2 如何提升它的性能?

*/

参照:https://www.cnblogs.com/goody9807/p/6425399.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,076评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,658评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,732评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,493评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,591评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,598评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,601评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,348评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,797评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,114评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,278评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,953评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,585评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,202评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,180评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,139评论 2 352

推荐阅读更多精彩内容