万得 19 春招面经
希望能帮助到大家,因为个人原因我投的都是上海的,所以机会也就比较少了。
[toc]
Sagreen 3.11 15.00-16.20 offer
顺序不保证,想起啥来写啥
一面
面试官比我大一届
- 介绍项目
- Redis 本身有队列功能,为什么还要实现
- ThreadLocal 说一下底层实现
- BigDecimal 机制说一下(答飞了,乱说了一同操作系统默认不支持,只支持浮点啥的,不是他想听的,那好像说蒙他了)
- ArrayList 说了下底层实现,是线程安全的嘛,如果要线程安全的是什么,CopyOnWriteArrayList 底层实现机制,讲了一通源码
- volatile 讲一下实现机制,原子性保证吗?
- AtomicInteger 怎么保证的
- 继续 Set 底层实现(有点儿蒙,Set 咋说,我问他是 HashSet 吗),他说那你说 HashSet 吧,感觉没啥好讲的,讲了为啥去重,常量 Value。
- HashMap 并发安全的吗?会出现什么情况?讲一下这个情况具体怎么出现的,如何避免?
- 除了 ConcurrentHashMap 和 HashTable 还有什么方法,Collections.synchronizedMap 怎么实现的。
- ConcurrentHashMap 知道的说一下,讲了知道的所有源码。1.7, 1.8 的对比,分段锁,桶锁,链表头插尾插等等等等
- Java 中有哪些锁
- synchronized,ReentrantLock 分别讲一下实现机制,synchronized 的锁优化,膨胀(面试官没问,我自己连带着说的,他没打断我)。
- ReentrantLock 公平锁,非公平锁源码讲了半天,重写的 lock 判断机制。
- AQS,AOS 讲了 AQS 的 state,Node 内部类,acquire 判断机制。AOS 干嘛的
- Semaphore 是干嘛的,和 Semaphore 功能相似的还有什么类。(CountDownLatch?)
- 线程池有哪几种,区别说一下,看过线程池那些源码,讲了 ctl,execute 怎么执行,Worker,keepAliveTime 什么时候起作用。(前一天刚开从一篇面经看到,还好复习了 execute -> reject -> run -> runWork -> getTask)
- GC 算法讲一下
- 如何判断对象是否需要 GC
- SpringMVC 的两连问具体忘了,好像是什么是否是并发执行?(都不会)
- 如果让你设计一个订单系统是同步的还是异步的,回答的异步,面试官问那订单还没下完就返回成功页面了?我解释说异步连带任务不是响应结果异步。
- 数据库了解不,讲一下有哪些索引,区别
- 有什么想问我的
就记得这么多了,小公司,原本是另一个面试官,结果临时有事,他是被临时分过来面我的,完全想到什么问什么,看我简历下面写的
Java:熟悉 Java 集合,并发编程,JVM,部分 JUC 常见类,阅读过部分 JDK 源码
然后问一块儿在上面打一个小勾,一轮技术面。
二面
大 leader 只有一个技术问题其他的闲扯成绩,上家公司做什么,还狂压我薪资,说我学分学分有点儿低压,这不行呀呢不行呀,行业不行呀。(微笑对待,你说的都对) 20分钟
- Java 中为什么拆箱装箱(~懵逼了)
总结:大 leader 感觉有点儿不专业了,拆箱装箱说成(in box,out box),而且感觉格局好小,好掉价。被一面面试官问完原本感觉这公司挺好,后面的大 leader 太掉价了,还有小公司这么能问惊了
缔安科技 3.12 hr 在跟踪
顺序不保证,想起啥来写啥
我去面的时候 Java 部门 leader 不在国内,然后公司核心部门技术总监面的我,搞 C++ 的。
因为他对 Java 不了解,我对 C++ 认知为 0,总共二十分钟面试。后来问 HR 说觉得我可以,但对他们部门没兴趣好像
一面 20 分钟
- 项目***能说一下,(为什么都不用我自我介绍呢)
- Redis 的问了一个忘了
- KMP 算法能讲一下吗,回答只是了解过复杂度来和 Trie 进行比较的。Trie 讲一下,讲完之后说前缀树呗?
- XSS 讲一下,除了 cookie 还能窃取什么?
- 项目中用了多线程? 你也知道线程间有线程调度的问题,你单 CPU 凭什么认为多线程能有优势,我回答我双核 4 线程
- 介绍他们部门,问我有意向做 C++ 吗
二面 20 分钟
晚上 9.45 准时打过来
- Java 垃圾回收的机制,怎么实现的(真泛)。讲了引用计数,GC Roots,4 个垃圾回收算法。
- 设计模式了解吗,单例模式什么时候适合用,并发请求时会有安全问题吗?安全的实现方式是怎样的?DCL
- MySQL了解吗?聊一下索引吧,为什么加索引,什么时候加索引,索引怎么实现的
- 前端经验有吗?
- 提问环节,问他对我面试评价,和建议(面试官说尽量不要说太细一个人说太多,虽然说这个行为挺好,但是你可以先问问面试官说,这里我也比较熟用给您说一下吗?)
最后给了 3 道编程题,第二天中午12点给他。
万得 3.13 10.15-11.20 offer 17.4w
顺序不保证,想起啥来写啥
笔试
先做了两道编程题,第一题必做,第二题选做,很水。搞笑的是,1 月份花了半个月刷了 100 道 leetcode,两个月没再碰,尽然屁也想不起来了。做了 1 道半,有思路但属于硬往出挤代码,不想浪费 HR 小姐姐时间了。
一面 1个小时
- 项目(又不用我自我介绍,白背了)
- Redis 常用数据结构说一下
- 异步队列怎么做的
- HTML 标签怎么过滤的
- ThreadLocal 讲一下
- 为什么要根据活跃用户和僵尸用户进行接口拆分(好像 Sagreen 也问到了) 怎么做的?
- Spring IOC 讲一下
- MyBatis SQL 注入讲一下,怎么避免
- @RequestMap,@PathVariable,@Mapper,@RequestParam
- 前台发来 json 数据怎么接收处理,@RequestBbody
- 画项目架构图
- RESTful 风格讲一下添加一个用户怎么写
- 有效的缩短了 46.1% 的用户平均请求等待时间怎么测的。
- 越权怎么做的?用的什么框架?
- BigDecimal
- 泛型的好处
- 线城实现的几种方式,区别
- 用户多个角色,每个角色有对应的权限,需要几个表,你怎么设计
他就问完了,(????),我觉得有点儿问的浅呀,这是觉得我不会?赶快问他,我还经常看一些 JDK 源码,需要给您讲一下吗。然后他就让我讲,我蒙了一下,一瞬间不知道讲哪里,蒙了 3 秒。3 秒后意识到这是补救的时候。
- 集合类,讲完 ArrayList,Vector,Collections.synchronizedList,CopyOnWriteList 之后讲 Set,讲到 HashSet 的 node 函数二分法,他说不用了,这么讲没完了。还说我这函数名都记得挺全啊。回答:微笑,看过很多遍(废话,专门背过,不过也确实看过很多遍老忘)
- 然后我说给您讲讲 HashMap?然后他让我继续讲,然后 HashTale,ConcurrentHashMap,1.7,1.8 然后 ReentrantLock,AQS,AOS
- 线程池 balabala (讲完线程池蒙蔽了,我还看过啥源码停了几秒)
- AtomicInteger 源码(讲完又懵逼了,边讲还边想我还看过啥,JUC 下很多都看过,但好像都想不起来了,不敢说)
- 实现想不到了,为了缓解尴尬,我数据库也了解的比较多一些,用给您说一下吗?说
- 存储引擎,索引。(又不知道该讲啥了)
- 分库分表,水平切分,垂直切分
- 问我什么时候需要分库,为什么分库?
- 读写分离,主从复制
- 知道代码层面怎么做吗? 回答:只简单了解过一些概念性知识,没有去做过。
- 我在等他问:他在等我继续说,然后我俩对视了一眼,一时间有些尴尬。然后和我说那就到这里吧
然后带我去找 HR 小姐姐填表,走在路上突然想起来 synchronized 实现机制没说,然后和他说需要我再讲一下吗,他说时间差不多了,就这吧。
最后期望薪资作死填了 13k,看了 offershow 万得的薪资之后,双非二本的自己感觉已经走远了。