Error message here!

Hide Error message here!

忘记密码?

Error message here!

请输入正确邮箱

Hide Error message here!

密码丢失?请输入您的电子邮件地址。您将收到一个重设密码链接。

Error message here!

返回登录

Close

一份来自一月寒冬互联网一线的面经(附面试题)

NovaCN 2019-01-27 23:03:00 阅读数:198 评论数:0 点赞数:0 收藏数:0

1.背景:

因为公司变动,lz不得不出来看看机会, 面试的岗位主要是后端,历经三周,面了北京大大小小的几家公司,最后收获了满意的offer。

自己也成长收获了不少, 谨以笔记,自己可以日后回忆,也希望能帮助到最近寒冬下需要找工作的同学,在文章的后面会附上一点小心得和建议。

 

2.level

我是16年本科毕业, 算上实习接近2年半-3年的工作经历吧,一直做java后端。  自己定位大概能到p6+的水平。有大厂经验,本科211, 所以面试机会总体来说还是挺多的。

 

3.过程

大概是从元旦过后开始写简历,投简历,从7号开始陆陆续续面了若干公司, 有好有坏,以表格形式记录如下,以我面试的时间排序。

声明:虽然博客没有什么人看,但是如果您认为记录有不实或者伤害到下述公司名誉啥的, 直接联系我删除即可。

有朋友建议我省掉公司名,我就用某代替吧。公司 部门  渠道  结果  感受(办公环境,面试难度,感受)  

某信银行

 

DevOps

Boss 4+0,拿到offer.

(4技术面 0hr面,下同)

 某信的位置和办公环境都很不错,位于安贞门。

面试官人很nice,没有多余的操作, 并且友好地帮我倒了一杯水。

主要针对简历中的项目,以及java基础进行面试。

难度也是循序渐进, 说实话因为是第一家面试, 我确实很多地方没有准备好,但是还是感谢面试官给我机会。

感受:之前感觉银行可能比较水, 但是感觉各方面都挺与时俱进的, 待遇和人文也很有竞争力。 某信应该有大几百人的研发团队,各方面应该都不输于D轮的互联网公司。 总体是比较赞的。  某动    Boss  线上笔试 3道Codility,英文,大概3h限时, 我应该1h就写完了,用例跑通我就提交了,但是只有一道题ac。(很奇怪,也没有错误用例的提示,和LeetCode有些不一样)

 然后hr还是让我去面试, 我拒绝了,可能是我当时已经对这家公司没有太大兴趣了。 某见科技    Boss 笔试+面试一家AI创业公司, 看jd介绍不错就去了。 最后发现是在一个很偏,有点破的创业园,里面环境有点像家乡的网吧。

笔试3道很简单的题, 面试也没什么深度,面试官说实话感觉水平比较一般。

总体技术和互联网差别很大, 我当时也是抱着练手的态度过去。 所以也没下文了。  某vo  金融 Boss   视频面试 1面视频面,难度循序渐进,两位面试官提问。 面试官说第二天hr联系我,结果也没联系。我也没问了。

主要是因为某vo在深圳,我在北京,可能我也不是很想换城市,后面投的都是在北京了。  某团  --  Boss 3+0 拿到offer 某团的环境感觉就是标准的互联网风格,

面试官也很务实友好, 难度循序渐进,二面会问一些底层,并发的理解。

某团无论是从技术沉淀还是我面试团队的潜力, 都是我很心仪的。

很幸运也给了我一个不错的定级和待遇。  某米  某品  Boss 2面撤了 说实话,我开始是不想投某米的,但是考虑到我是湖北人,可能回武汉。

但是!!!我面试之前应该在脉脉上搜一搜这个部门的。

这个部门位于清河一个挺偏的地方, 周围仿佛回到了18县小乡镇。

面试官也是low爆炸了,一面面试官穿了一个脱鞋,让我在楼下等了20min,前台态度也不好。

然后竟然去了一个茶吧台面试。不过一面面试官总体态度还行。(某米不提供饮水,面试官带我去饮料机买了瓶汽水,当然是我自费,从某米出来我就有了带水的习惯了。)

二面简直是个活宝,上来站着问,你懂hashmap吗, 我简单答了一下数组+链表,然后按理应该往碰撞,或者并发的方向继续问, 结果坐下,抖腿,问什么抓包的原理,然后扯的乱七八糟的。 最后憋了一分钟吧,出了一个很无聊的题(LeetCode第十题)。 我实在不想浪费彼此时间,就直接走了。

某米本身在我心中还是个挺有态度的公司,和雷某总也是老乡。  哎,真是刷新了我的三观。  某脉  效能  Boss  2+1 某脉我觉得公司和产品一样nice, 位于768,环境很安静。

hr笑的很开心,面试官也很有礼节。

他们主后端是用python, java主要做一些离线和效能的工作。

因为第一天3面面试官不在, hr让我第二天过去, 但是由于面试过程中了解到是去做效能平台,财务平台。

秉着发展的考虑,我还是拒绝了。 

但是我还是推荐某脉, 小而美。  某某跳动  某告  猎头  3+1,拿到offer 面完某米之后,我觉得我不能在小公司上面浪费时间,同时也有了某团的offer。

于是我把其余的面试都取消了,只剩下了某条和某里。

某条办公环境,位置都很好。 每层都有食堂(请我吃了一顿,很好吃)

同学们给我最大的感受是 年轻,有活力,友好。 还有就是真的忙。

我身边已经有陆陆续续不少同事选择了某条了。

面试难度其实没有传说中的那么难, 不至于手写红黑树,但是基本的数据结构和算法要熟悉,每一面都会写算法。

hr感觉也很尽心尽责。 某某巴巴 某学 Boss 3+1某巴巴的面试总体有点失望,首先hr没预约会议室,导致在休息区面试。 也没有茶水,虽然我自带了。

然后是办公区到处都是屏幕,循环着某云的创业视频。

三面面试中规中矩。

某学本来就不是我投的部门(我投的u某c,不知道咋流过去了,然后让我面试,我也想试一试吧,然后hr说我某蚁简历没过,可我压根没投过)

某里最难的是hr面,  一个hr非要充当心里学家,问你人生高潮是啥, 非常没有礼貌,说话直接打断,也没什么信用,感觉这群hr把某里搞得乌烟瘴气。   特别是hr套路很多, 面完了说没有hc,hc要审批(那你喊我来干嘛) ,然后我有很优秀的同事面过了 (其实也一直拖着没给offer),我说有人拿offer了 ,hr又说人家面的早。让我感觉她就是在刷kpi啥的。

反正这个部门我是不建议去了, 周围拿到某学offer的同事也打算拒了再看看。 某马逊 物流仓储 Boss 还没面  

 

4.总结及建议

1.一定要提前准备好,刷一定量的题,特别是现在各大公司都有自己的招聘系统,如果一面就挂了,可能直接就拉黑,后续面试就更难了。

2.关于刷题,大概刷完剑指offer上面的经典题, 或者leetcode前100道应该就够了,我建议有选择的刷,主攻排序,链表,大文件处理这些面试高频的,也有意义的。

3.关于练手,我觉得不要有太大的心里负担, 你去一般公司面试,对于公司可能是一种匹配,但是对个人可是一次很好的自我认知反省的机会,甚至会改变后续的很多结果。

我们结合对行业的了解,如下公司可以说小而美(其实也是大独角兽了),本身就值得加入,面试也有很多收获: 某辅导,某脉,某探,瓜某,某vo互联网。

当然拿大厂的边缘部门练手也未尝不可,就是有风险有记录。

当然也有一些黑名单,面试官迷之自信,态度傲慢,技术浅显, 建议大家面试前脉脉一下。。

最后一棒子打死,感觉位于清河的公司,可能都不太利于个人生活和发展。

4.关于基础,我在下面附上一些前辈整理好的url。一定要夯实打捞。

5.关于面试礼仪,我觉得面试礼仪是衡量双方的重要标准, 面试者要注重自己的仪表整洁,谈吐礼貌自然。 可以从公司面试官的行为判断出公司的大体人员素质,我个人比较看重公司行政或者面试官是否能给瓶矿泉水或者倒杯水,我认为这是尊重一个面试者的基本表现,虽然后来我都是自己带水。 我面试中就某米和某里没有提供(并且某里某学是饭点约去面试,也不管饭,饿着肚子从5点面到9点多),然后就是双方是否守时,我一般提前20分钟到,提前10分钟给hr打个电话。 

6.关于面试难度,我觉得正常应该是围绕简历和基础循序渐进,一上来手撕红黑树,给个hard基本要dp的,或许不是真心想招人的。 

当然,即使难点也不要慌, 表达好自己的思考过程,展现自己一个综合的素质 ,即使错了也不会被一票否定。

7.关于面试技巧, 之前看了有的前辈说尽量把面试官往自己熟悉的领域带,有一点道理, 但是我没有刻意这样操作过, 不会的一般思考一下,直接说不确定/没研究过/不会,然后说一个可能的原理,如果合理我认为也能体现一种技术功底和应变能力。

其他的想到在整理吧。

 

 

5.面试题+基础

各家的面试题其实都大同小异, 掌握基础和原理,走到哪都不怕。

 基础

leetcode上有一些总结,star数非常高了。贴上url

https://github.com/CyC2018/CS-Notes

https://github.com/Snailclimb/JavaGuide

这两个大概只是个提纲,如果是高级职位,深度可能不够,具体的还得看书。

另外强烈推荐 http://www.iocoder.cn/ 芋道,我的面试题很多都是从上面找的。平时对提高也有帮助。

 

 reids

redis的话,我推荐《Redis深度历险:核心原理和应用实践》 和《redis设计与实现》

 

  • 知道redis吗,redis是如何做持久化的
  • 介绍下redis的特点,redis的基本数据结构,数据持久化方式,主从之间如何同步;
  • 导致redis性能瓶颈的操作
  • redis有哪些接口
  • Redis的实现模式;
  • redis为什么这么快?

 

 

java-core

基础的话主要看源码吧, collection和juc里面的。 然后就是《java编程思想》和《java核心技术 卷1.2》(有很多过时的章节直接跳过即可) 

  • 1、List 和 Set 的区别
  • 2、HashSet 是如何保证不重复的
  • 3、HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安全)?
  • 4、HashMap 的扩容过程
  • 5、HashMap 1.7 与 1.8 的 区别,说明 1.8 做了哪些优化,如何优化的?
  • 6、final finally finalize
  • 7、强引用 、软引用、 弱引用、虚引用
  • 8、Java反射
  • 9、Arrays.sort 实现原理和 Collection 实现原理
  • 10、LinkedHashMap的应用11、cloneable接口实现原理
  • 12、异常分类以及处理机制
  • 13、wait和sleep的区别
  • 14、数组在内存中如何分配

 

 

java-并发

我推荐《java并发编程艺术》 我觉得比 《java并发编程实战》更好理解一点。

 

  • 1、synchronized 的实现原理以及锁优化?
  • 2、volatile 的实现原理?
  • 3、Java 的信号灯?
  • 4、synchronized 在静态方法和普通方法的区别?
  • 5、怎么实现所有线程在等待某个事件的发生才会去执行?
  • 6、CAS?CAS 有什么缺陷,如何解决?
  • 7、synchronized 和lock 有什么区别?
  • 8、Hashtable 是怎么加锁的?
  • 9、HashMap 的并发问题?
  • 10、ConcurrenHashMap 介绍?1.8 中为什么要用红黑树?
  • 11、AQS
  • 12、如何检测死锁?怎么预防死锁?
  • 13、Java 内存模型?
  • 14、如何保证多线程下i++ 结果正确?
  • 15、线程池的种类,区别和使用场景?
  • 16、分析线程池的实现原理和线程的调度过程?
  • 17、线程池如何调优,最大数目如何确认?
  • 18、ThreadLocal原理,用的时候需要注意什么?
  • 19、CountDownLatch 和CyclicBarrier 的用法,以及相互之间的差别?
  • 20、LockSupport工具
  • 21、Condition接口及其实现原理
  • 22、Fork/Join框架的理解
  • 23、分段锁的原理,锁力度减小的思考
  • 24、八种阻塞队列以及各个阻塞队列的特性
  • 单机上一个线程池正在处理服务,如果忽然断电了怎么办(正在处理和阻塞队列里的请求怎么处理)?
  • 为什么要使用线程池?
  • 线程池有什么作用?
  • 说说几种常见的线程池及使用场景。
  • 线程池都有哪几种工作队列?
  • 怎么理解无界队列和有界队列?
  • 线程池中的几种重要的参数及流程说明。

 

JVM

JVM应该就一本《深入理解JVM虚拟机》 就够了, 但是我买的版本比较老,1.8以后内存区域做了一些改动,自己的得知道。

 

  • 1、详细jvm内存模型
  • 2、讲讲什么情况下回出现内存溢出,内存泄漏?
  • 3、说说Java线程栈
  • 4、JVM 年轻代到年老代的晋升过程的判断条件是什么呢?
  • 5、JVM 出现fullGC 很频繁,怎么去线上排查问题?
  • 6、类加载为什么要使用双亲委派模式,有没有什么场景是打破了这个模式?
  • 7、类的实例化顺序
  • 8、JVM垃圾回收机制,何时触发MinorGC等操作
  • 9、JVM 中一次完整的GC 流程(从ygc 到fgc)是怎样的
  • 10、各种回收器,各自优缺点,重点CMS、G1
  • 11、各种回收算法
  • 12、OOM错误,stackoverflow错误,permgen space错误
  • 说一下对jvm的理解,jvm的组成部分,各个部分的存储内容以及常见的jvm的问题排查步骤。
  • 对JVM熟不熟悉?简单说说类加载过程,里面执行的那些操作?
  • JVM方法区存储内容是否会动态扩展是否会出现内存溢出出现的原因有哪些。
  • 介绍介绍CMS。
  • 介绍介绍G1。
  • 为什么jdk8用metaspace数据结构用来替代perm?
  • 简单谈谈堆外内存以及你的理解和认识。
  • JVM的内存模型的理解,threadlocal使用场景及注意事项?
  • JVM老年代和新生代的比例?
  • jstack,jmap,jutil分别的意义?如何线上排查JVM的相关问题?
  • Java虚拟机中,数据类型可以分为哪几类?
  • 怎么理解栈、堆?堆中存什么?栈中存什么?
  • 为什么要把堆和栈区分出来呢?栈中不是也可以存储数据吗?
  • 在Java中,什么是是栈的起始点,同是也是程序的起始点?
  • 为什么不把基本类型放堆中呢?
  • Java中的参数传递时传值呢?还是传引用?
  • Java中有没有指针的概念?
  • Java中,栈的大小通过什么参数来设置?
  • 一个空Object对象的占多大空间?
  • 对象引用类型分为哪几类?
  • 讲一讲垃圾回收算法。
  • 如何解决内存碎片的问题?
  • 如何解决同时存在的对象创建和对象回收问题?
  • 讲一讲内存分代及生命周期。
  • 什么情况下触发垃圾回收?
  • 如何选择合适的垃圾收集算法?
  • JVM中最大堆大小有没有限制?
  • 堆大小通过什么参数设置?
  • JVM有哪三种垃圾回收器?
  • 吞吐量优先选择什么垃圾回收器?响应时间优先呢?
  • 如何进行JVM调优?有哪些方法?
  • 如何理解内存泄漏问题?有哪些情况会导致内存泄露?如何解决?

 

 

Spring

spring的话,感觉现在问的少了, spring cloud会问的比较多, 应该算在微服务/分布式的知识点里面。

  • 1、BeanFactory 和 FactoryBean?
  • 2、Spring IOC 的理解,其初始化过程?
  • 3、BeanFactory 和 ApplicationContext?
  • 4、Spring Bean 的生命周期,如何被管理的?
  • 5、Spring Bean 的加载过程是怎样的?
  • 6、如果要你实现Spring AOP,请问怎么实现?
  • 7、如果要你实现Spring IOC,你会注意哪些问题?
  • 8、Spring 是如何管理事务的,事务管理机制?
  • 9、Spring 的不同事务传播行为有哪些,干什么用的?
  • 10、Spring 中用到了那些设计模式?
  • 11、Spring MVC 的工作原理?
  • 12、Spring 循环注入的原理?
  • 13、Spring AOP的理解,各个术语,他们是怎么相互工作的?
  • 14、Spring 如何保证 Controller 并发的安全?

 

Netty

 我不会

 

分布式相关

主要考察对cap和base的理解吧, 我没有系统学习过,主要靠平时的积累。

  • 1、Dubbo的底层实现原理和机制
  • 2、描述一个服务从发布到被消费的详细过程
  • 3、分布式系统怎么做服务治理
  • 4、接口的幂等性的概念
  • 5、消息中间件如何解决消息丢失问题
  • 6、Dubbo的服务请求失败怎么处理
  • 7、重连机制会不会造成错误
  • 8、对分布式事务的理解
  • 9、如何实现负载均衡,有哪些算法可以实现?
  • 10、Zookeeper的用途,选举的原理是什么?
  • 11、数据的垂直拆分水平拆分。
  • 12、zookeeper原理和适用场景
  • 13、zookeeper watch机制
  • 14、redis/zk节点宕机如何处理
  • 15、分布式集群下如何做到唯一序列号
  • 16、如何做一个分布式锁
  • 17、用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗
  • 18、MQ系统的数据如何保证不丢失
  • 19、列举出你能想到的数据库分库分表策略;分库分表后,如何解决全表查询的问题
  • 20、zookeeper的选举策略
  • 21、全局ID

 

 

mysql:

《Mysql技术内幕-innodb存储引擎》就够了。

  • mysql索引的实现原理
  • Innodb中,什么是聚集索引,非聚集索引,他们是什么关系
  • 插入一条记录时,聚集索引和非聚集索引是如何修改的
  • 建立索引的标准是什么
  • 查看SQL 是不是使用了索引?(有什么工具)
  • SQL 索引的顺序,字段的顺序
  • MySQL 分页查询语句,mysql分页有什么优化

 

 

版权声明
本文为[NovaCN]所创,转载请带上原文链接,感谢
https://www.cnblogs.com/novaCN/p/10328380.html

编程之旅,人生之路,不止于编程,还有诗和远方。
阅代码原理,看框架知识,学企业实践;
赏诗词,读日记,踏人生之路,观世界之行;

支付宝红包,每日可领