一个普通的java程序猿在广州的面试之路

先介绍下本人背景吧。

坐标:广州

职业:java程序猿

学历:一个垃圾本科,不出名那种

毕业年限:2017年7月

之前所在公司:广州一个中型互联网公司做产品研发

之前工作经历:2016年7月出来实习,一直到2019年2月底才进行离职。在职期间,团队从30余人,扩张到了150多人。也是看到了什么叫裂变式扩张。个人在其中的发展,从其中的一个实习生,逐渐成长为团队的核心人员

之前的成就:开设过mysql索引优化、git引入等课程;参与了团队的中台的创建过程;负责面试(初级、中级、高级);系统运维;系统 安全改造(csrf、xss);中枢模块的研发;搭建elasticsearch框架等

之前的荣誉:获得1次年度优秀员工,2次优秀内部讲师,1次季度优秀员工


因为种种原因,提交了离职申请,在2月底,加入到了面试大军中。面了接近20家公司,也是拿到60%以上的offer。一般的面试流程都会是笔试(个人不太喜欢笔试),一面,二面,hr。下面会挑几家公司分享一下。


巴图鲁:面试的是他们的支付平台,有幸进入到了hr面。先是做一份笔试题,

一面:主要是问了一些之前的工作经历,技术的话,会问b+树的底层,redis的底层结构,还有redis的持久化方式,java内存溢出的类型,双向环形链表和单向链表的区别,还有mysql的分库分表策略,几个mq之类的区别,redis和zookeeper的锁的区别,如何对待redis的雪崩(预防,发生两方面来回答)

二面:主要是问基础方面。会问java里list、set、map的底层,mysql的隔离级别,cas算法,jdk1.8 hashmap的变化,以及为什么要这么变,object类 notice和wait的使用,以及能想到怎样的 应用场景,当项目同时使用了memcached和redis,如何看待这样的设计


Fordel:面试的是商品平台的资深java工程师,可惜实力不够,只能到了一面。

一面:面试官是一个曾经阿里的大牛。mysql的分库分表策略,以及再次需要分库分表,要怎样解决。抽象工厂和工厂的区别。redis的底层数据结构,读写分离的设计方案,一致性哈希的原理,mysql主从同步的原理,线程安全的本质,hashmap为什么要转换为红黑树,线程并发的问题,AQS算法的本质,b+树的底层结构,mysql事务的实现原理 


CVTE:面试的是旗下的未来教育的中台架构组。一共3面,有幸进入到了最后一面。

一面:是一个电话技术面试,对spring cloud的了解,b+树和二叉树的区别,mysql是怎么实现事务的,4个隔离级别的区别,redis的底层数据结构,jvm的内存结构模型,组合模式,单例模式的三种实现方式,java的线程池的实现方式,如何实现线程池的自定义拒绝策略、自定义排队策略,list的底层,以及为什么会这样设计,如何进行埋点,设计分布式的链id,还会问我读书的选择策略。

二面:是现场面试,主要是问我原来的工作难题,主要是有如何解决树状结构的大数据量的查询,如何解决树状结构交集、差集、并集的问题,对于中台的理解,以及我原来那家公司的中台目前的搭建情况,在原来工作中redis的使用方式,如何进行技术选型,选版本。然后会反问我,对于我原来的工作,我还有什么可以改进的地方,我还有什么可以精进的地方。反问了一下他,我的不足,他反问了我,让我思考,我有什么不足的地方,可能这是一个特别难答的点吧,中肯的审视自己是很难的一件事。

三面:hr面试,主要是各种心理测试题,会问你各种问题,考量你对公司的切合度。


光大分利宝:一共2面,有幸进入到了最后一面

一面:先做笔试,包括了nginx、mysql、java基础、spring boot等。然后面试官,主要问了csrf和xss的安全防御,以及如何进行攻击。nginx的优劣势,用java实现nginx会如何去实现,还有主要会问分布式事务,他们是金融平台,正在进行改造,对分布式事务那块会很看重。

二面:hr面试了,只是谈一些待遇啥的。


车行易:只到了第一面

一面:spring boot常用注解,spring cloud的常用注解,git仓库创建的命令全程,对于事务的理解。第一次遇到这样的问题,脑袋一片空白,就挂了


酷狗:面试的是视频直播部门的java高级。有幸到了第二轮面试。

一面:一面之前是2轮笔试,一轮纯java,一轮是逻辑思维题,过了才有1面。一面面试官是一位很资深的面试官,面试很有特色,会有本子和笔在那里。主要问了jvm的内存模型、b+树的底层、改变数据对b+树的影响,对于redis的使用,如果要对redis的数据进行计数,知道是为啥不,cas算法,aba问题,线程池的理解,hashmap的变化,红黑树的旋转策略,完全二叉树和b+树的区别,事务实现的本质,redis的底层数据结构,es的底层原理,kafka和rocketmq的区别,mysql主从同步的原理,如何权衡技术和项目周期。

二面:是一个很厉害的技术大牛。主要问我,对于分库分表的设计,以及扩容后,再次分库分表的上线策略,redis如何防止雪崩,如何100%保证redis和mysql的同步和准确性,对spring源码的研究,以及未来半年的计划等


百布:一共2轮面试,有幸到了第二轮面试

一面:红黑树的原理,如何自己实现一个orm框架,并做到好用,用过哪些rpc框架,redis的持久化方式,redis主从和集群的优劣,redis和memcached的区别,redis哨兵的监控策略,b+树的底层原理,如何实现mysql的事务,mysql主从同步的原理,mysql全新的多线程主从同步的原理,用过哪些设计模式,git冲突的解决方案,还有就是当场给我出了几道算法题,让我设计一个最优方案

二面:主要是问我对加班的看法,还有对项目的看法等,几乎没有技术问了


玄武科技:只到了第一面

一面:先做了一份笔试题,在我看来,这份笔试题,很有水准,包含了正反代理,数据库分库分表设计,设计模式,redis的持久化方式,http和udp的 区别,数据库事务的隔离方式等,足足做了1个小时,技术的话,几乎没问什么,面试官都在看笔试结果,不过那边需要有nio的 经验,这块没达到他们的要求。


local路客:一共2面,有幸进入了第二面

一面:b+树原理,AQS算法,CAS算法,ABA问题,跨事务的查询,公平锁和非公平锁的区别,spring cloud的断路器的设计原理,如何解决分布式系统的脑裂问题,Https如何保证安全,redis分布式锁的潜在隐患,如何保证redis和mysql的一致性,mq之间的区别,补偿机制的实现思路,hashmap的扩张因子为什么是0.75,如何在线上快速定位问题。

二面:非技术,是以为产品经理,主要是跟我讲,入职,将要做的事情


暂时只分享这么多吧,可能要让大家失望了,没有大家期待中的大厂(BAT,TMD等),学历限制了自己,hr那关过不去,只能分享一些自己遇到的问题。以上的公司,只有我面试的公司的一半吧,有过的,也有不过的,面试其实是一个比较看运气的时候,也会遇到各种各样的奇葩问题,有空会慢慢开始写一些在面试中遇到的问题,以及跟面试官交谈的经验。其实,跟面试官交流是一个很有意思的事情。每一家公司能担当面试官的人,都是很不错的技术大牛,跟他们的交流,会开阔自己的眼界

个人认为,其实面试是一个很好的学习过程,觉得可以问面试官,他对于自己的看法,自己的不足,自己的优势,这样会让自己更加看清自己,能精进自己,往更好的方面发展。

你可能感兴趣的:(一个普通的java程序猿在广州的面试之路)