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. <自动化测试方案_8>第八章、手机端UI自动化测试

    第八章.手机端UI自动化测试 (一)APP测试分类 1,原生APP:Native页面是使用原生系统内核的,相当于直接在系统上操作 2,H5APP:先调用系统的浏览器内核,相当于是在网页中进行操作,较原 ...

  2. Scala之eq,equals,==的区别

    一.简介 根据官方API的定义: final def ==(arg0: Any): Boolean The expression x == that is equivalent to if (x eq ...

  3. 网络基础 外网IP,内网IP,虚拟机的网络设置

    外网IP,内网IP的关系 在这三类地址中,绝大多数的IP地址都是公有地址,需要向国际互联网信息中心申请注册.但是在IPv4地址协议中预留了3个IP地址段,作为私有地址,供组织机构内部使用. 这三个地址 ...

  4. 西湖论剑2019复现-Web之首家线上赌场上线啦

    首页打开 经过测试发现name和code参数可控,但尝试注入没有发现注入点,于是直接扫描目录找思路 一扫描,果然有问题 目录扫描里面可以看到有一个/.DS_Store的文件,DS_Store是Mac ...

  5. Windows中通过命令行启动打开Service 管理工具

    经常需要打开Services 管理工具操控Service 的启动,停止. 通过控制面板 --> 管理工具 -->Service  太慢. 学到一个快捷方式. windows + R  启动 ...

  6. windows下mysql 5.7以上版本安装及遇到的问题

    (原) 早些前用window安装mysql挺简单的,一个安装程序,一路下一步. 2006的5.0版本,确实太早了点. 于是官网上又下了一个版本,windows也是提供了二个版本Installer(安装 ...

  7. MyBatis学习日记(三):戏说MyBatis配置文件

    properties标签 properties标签可以用来加载别的配置文件,比如可以加载数据库的配置文件,jdbc.properties. 下面是jdbc.properties jdbc.driver ...

  8. 数据的偏度和峰度——df.skew()、df.kurt()

    我们一般会拿偏度和峰度来看数据的分布形态,而且一般会跟正态分布做比较,我们把正态分布的偏度和峰度都看做零.如果我们在实操中,算到偏度峰度不为0,即表明变量存在左偏右偏,或者是高顶平顶这么一说. 一.偏 ...

  9. 类Scanner

    什么是Scanner类 一个可以解析基本类型和字符串的简单文本扫描器. 引用类型使用步骤 1:导包:使用import关键字导包,在类的所有代码之前导包,引入要使用的类型. java.lang包下的所有 ...

  10. java 图片处理 base64编码和图片二进制编码相互转换

    今天在弄小程序项目时,涉及上传图片的更改. 以下是代码: /** * -> base64 * @param imgFile * @return * @throws IOException */ ...