2019秋招Java面经(凭记忆回忆, 可能不准)

随着我们从大三升到大四...秋招也开始了. 秋招进行的还比较顺利, 刚开始没几天, 我的秋招就结束了.

到现在我玩了差不多十多天了, 总想着总结一下面经, 一直懒. 现在就以这篇面经来宣告我的秋招结束吧.....

我在整个秋招期间在技术面没有挂过(贝壳 去哪儿 美团 百度, 百度金融. ...), 不喜欢收割offer, 觉得没意思而且浪费时间, 我只去参加自己中意的公司的面试.

而且我也不看钱(年薪二十万以上就可以了, 挣大钱是以后的事情), 我现在更关注公司的技术对我的发展会不会有很多帮助.

学历情况

双非, 本科

算法学习情况

剑指offer只看了前4道题  (现在是看到了第9题了).

左程云的书只看了前2道题.

贝壳 提前批一面(大概80分钟?)

这是我秋招面的第一个公司, 而且也是发挥最好的面试. 完全由我自己发挥, 让我发挥自己的擅长之处.

1.面试官笑

我傻笑

2. 请你自我介绍吧

balabala.....(我哪方面怎么怎么厉害, 多厉害什么的)

3. Java集合你都熟悉哪些

util包下的基本都说了...看过几个源码

4. 请你介绍一下HashMap和jdk里与其结构相似的集合

1> 我就讲了讲Hash的冲突解决方法都有哪些, HashMap采用的是链表解决...红黑树优化....为什么是8, 泊松定理什么的....

2> 负载因子和扩容策略, 连续扩容到64之类的...也就是介绍了各个变量的作用..

3> 然后说了说 jdk7 和 jdk8 两个版本之间HashMap的区别.

4> 讲了讲和HashTable的区别.

5> 和ConcurrentHashMap的区别.

6> 和IdentityHashMap的区别,

7> 和WeakHashMap的区别. 然后聊了一下Weak弱引用.

8> 接着又说了HashSet等set集合底层使用的是HashMap.

5. 讲讲你实习中在公司做的这个项目.

balabala....

(就是涉及到:

1> 分布式

2> netty

3> rpc

4> protobuf

5> http

6> redis

7> 手写lru缓存和优化

这几个关键词...)

6. 你对synchronized关键词的了解和对并发的看法.

谈了一下多线程的概念, 线程和进程的区别. 举了一个死锁的demo, 举了一个线程不安全的demo.

然后我就开始介绍synchronized关键词, 我还比较擅长这块, 就答得比较多:

1> 讲了讲锁的语义.

2> synchronized关键词加在成员方法上的时候, 底层是在方法表的访问标志中增加了ACC_SYNCHORONIZED.

3> synchronized关键词用在代码块的时候, 底层是直接在上下代码中插入了monitorenter和monitorexit.

4> 其实本质上都是moniter.

5> 还讲了一下synchronized加在静态方法(类方法)上和成员方法上的区别.

6> synchronized相关的知识点--对象头结构

7> 偏向锁  轻量级锁  重量级锁的 场景和升级的情况. 而且只可升级不可降级

8> synchronized相关的jvm参数   比如关闭偏向锁 -XX:UseBiasedLocking=false  之类的...还有更改默认自旋次数的一个...忘了...

9> wait()方法的底层实现. 讲了讲底层的 _EntryList  和 WaitSet

10> 说了说我的理解: 为什么对象都可以作为synchronized代码块的锁. 为什么wait方法是在Object类下

11> 和lock的区别. 比如不能响应中断什么的...

12> 锁的粗化

13> 锁的细化

14> 自旋优化

15> 锁消除. 用StringBuffer举的例子.

7. 写个sql查询.

我: sql不太会, nosql比较会.

面试官: 没事, 给你个简单的俩表连接查询

8. nosql你是熟悉哪种?

我: redis

9. 讲讲redis任意一个数据结构吧

我挑了最简单的SDS讲的...跟java的AbstractStringBuilder作对比, 讲了讲两个的扩容策略和细节上的区别.

10. redis的字典和java的HashMap做个比较吧

(我当时没想出来...面试官说了值后我才想起来....扩容的时候增量同步之类的...)

11. redis的持久化

讲了两种持久化的格式, 和优缺点, 和新版的优化. (之前可以肉眼看持久化文件的, 所以就讲了讲持久化文件的格式....现在不行了, 好久都忘了)

12. 线程池你用过吗?

我就介绍了一下java的线程池ThreadPoolExecutor里的每个参数...

13. 介绍一下线程池的拒绝策略...

我就讲了jdk实现的四种. 然后讲了一下我再github上看到的另一种实现...就是放进新队列里, 以更低优先权的方式进行调度.

14. 线程池什么时候回收线程? 怎么回收线程?

这块没答好....不太会...

15. 链表如何优化查询效率

跳跃表

16. 来写个代码吧. 手写个小算法. 两个有序链表合并为一个有序链表.

送分题...假装不会...一脸认真地写....

贝壳 提前批二面(大概一个小时)

贝壳二面面试官人很直爽, 很不错. 只是对我简历中的第二个项目很不满意, 而且我表述又不清. 聊得很不好.

1. Java反射, 比如如何修改一个变量. 如何修改static+final同时修饰的变量.

因为static和final同时修饰时, 直接用反射是无法进行修改的..回报异常. 应该反射Method来去掉final修饰符. 然后用反射来修改该变量. 修改完了后再反射Method把final修饰符加上.

2. 你为了这个项目自己实现了一个Objenesis? 讲讲呗. 为什么这么做...

从这里开始和面试官聊得很不来....一直在聊项目....

3. 谈谈你项目的架构.
从客户端到缓存到redis持久化和mysql持久化等等, 一致性hash等等....

4. 你还有没有什么问题

有. 讲了讲面试中的误解. 面试官说我不能答到问题的点上. 说我技术本身没有大问题, 说我的沟通能力很差.

我就解释了一下我母语不是中文, 面试官突然惊讶一下...

二面还是给我通过了...

贝壳 hr面(大概20分钟)

1. 你是哪里人

2. 对加班的看法

3. 为什么不留在上一家公司(我实习的公司)

4. 你还有什么问题?

我: 没有

去哪儿网 一面(大概80分钟)

1. 自我介绍

2. 讲解项目

1> 一致性哈希

2> 缓存

3> 微服务

4> ......

3. 来写个算法吧

然后我没写出来.......

4. 写个sql吧, 根据业务进行一个查找

墨迹了半天, 我也没写出来....(中间伴随着面试官烧热水...喝热水...还听到隔壁在聊布隆过滤器...   分神了)

5. linux 你用过吗?

我: 用过, 实习的时候在服务器上查个日志什么的

面试官: 用过哪些命令?

我: grep top tcpdump

面试官: 想只要一个关键词在文章中出现的行数, 怎么统计?

我: 不会....

6. 讲一下HashMap吧

1> 我就讲了讲Hash的冲突解决方法都有哪些, HashMap采用的是链表解决...红黑树优化

2> 负载因子和扩容策略, 介绍了各个变量的作用..

3> jdk7 和 jdk8 两个版本之间HashMap的区别.

4> 和HashTable的区别.

7. gc你熟悉吗?

我: 一般吧(其实我还是挺擅长gc和jvm的, 我怕骄傲了不好...)

面试官: 两个垃圾对象互相引用的时候, jvm会不会成功回收这两个对象.

我: 会. 因为不是引用计数, 是根据可达性.

(然后就下一题了...我还想继续往下讲呢....jvm就这样问完了....

2019秋招Java面经(未完待续)的更多相关文章

  1. 漫漫征途,java开发(未完待续)

    前言 2018年,大二上,有幸加入服务外包实验室的考核,在考核中,主动加入xxx项目的后端,一是为了积累项目经验,二是为了学到更多东西,进入了之后发现原来要学的这么多,时间这么紧!但唯有学习! 心得体 ...

  2. 003java面试笔记——【java基础篇】从团八百失败面试总结的java面试题(未完待续)

    8.java 线程     1)线程概念,线程与进程      线程:线程是“进程”中某个单一顺序的控制流.也被称为轻量进程.线程是进程中的实体,一个进程可以拥有多个线程,一个线程必须有一个父进程.线 ...

  3. 剑指Offer:面试题33——把数组排成最小的数(java实现)(未完待续)

    问题描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 思路1: ...

  4. Java并发笔记-未完待续待详解

    为什么需要并行? – 业务要求 – 性能 并行计算还出于业务模型的需要 – 并不是为了提高系统性能,而是确实在业务上需要多个执行单元. – 比如HTTP服务器,为每一个Socket连接新建一个处理线程 ...

  5. java之二叉树--未完待续

    参考http://how2j.cn/k/collection/collection-tree/476.html#nowhere 二叉树概念 二叉树由各种节点组成二叉树特点:每个节点都可以有左子节点,右 ...

  6. Java学习笔记(未完待续)

    变量的作用域(scope)是指变量可以在程序中引用的范围.在方法中定义的变量称为局部变量(local variable).局部变量的作用域从声明变量的地方开始,直到包含该变量的块结束为止.局部变量都必 ...

  7. Java 发送邮件工具包---未完待续

    开头先来介绍一片好文章: http://blog.itpub.net/15182208/viewspace-730172/

  8. Java开发中的23+2种设计模式学习个人笔记(未完待续)

    注:个人笔记 一.设计模式分三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模 ...

  9. java泛型基础、子类泛型不能转换成父类泛型--未完待续

    参考http://how2j.cn/k/generic/generic-generic/373.html 1.使用泛型的好处:泛型的用法是在容器后面添加<Type>Type可以是类,抽象类 ...

随机推荐

  1. vs code配置flutter开发android

    下载flutter_sdk压缩包,解压到指定目录,把sdk的bin目录添加到系统环境变量Path 设置中国临时镜像:添加两个系统变量 FLUTTER_STORAGE_BASE_URL=https:// ...

  2. ASP.NET Zero--基础设施

    基础设施 启动类 ASP.NET Core从应用程序中的Startup类初始化.我们在这个类中配置所有库(包括ABP).我们建议您先检查此课程.它也被集成到 OWIN.所以,你可以在这里添加OWIN中 ...

  3. P1551 亲戚题解

    标准并查集板子题 没啥好说的,分明是白书上的(除了输入方式外一点都没改动) #include<cstdio> #include<iostream> using namespac ...

  4. 【微信小程序】

    按照惯例,学习一门新技术或者新框架,咱们还是从官方提供的文档开始 微信小程序官方教程:https://mp.weixin.qq.com/debug/wxadoc/dev/ 微信小程序开发流程(博客): ...

  5. 编译装php7.2 && nginx-1.14

    环境准备 # cat /etc/centos-release CentOS Linux release 7.6.1810 (Core) # uname -r 3.10.0-957.el7.x86_64 ...

  6. Spring boot读取application.properties中文乱码

    解决方案 在IDEA环境下: File -> Settings -> Editor -> File Encodings 将Properties Files (*.properties ...

  7. MediaManager安装后配置

    端口要改成81 修改Chainmail名称:

  8. SQL进阶随笔--case用法(一)

    SQL进阶一整个是根据我看了pdf版本的整理以及自己的见解整理.后期也方便我自己查看和复习. CASE 表达式 CASE 表达式是从 SQL-92 标准开始被引入的.可能因为它是相对较新的技术,所以尽 ...

  9. ubuntu linux 安装分区

    挂载点/:主分区:安装系统和软件:大小为150G:分区格式为ext4: 挂载点/home:逻辑分区:相当于"我的文档":150G大小为硬盘剩下的; 分区格式ext4: swap:逻 ...

  10. socket传输数据循环多次的性能要好于一次

    今天做了一个测试,测试使用python的socket传输一个588k的数据,当传输过程执行一次时,执行时间为2ms左右.我觉着执行一次的时间并不能说明问题,于是就写了一个循环,循环执行1000次,然后 ...