面试题分享

    xiaoxiao2022-07-14  158

    前言

    面试了三个月,也拿到了一些比较满意的offer,就把面试题发一下把,公司名字就不说了,因为都没去(我是菊厂员工,实在不愿意这时候离公司而去,应该现在有很多人跟我做了一样的选择吧)

    面试题

    因为前两个月的记在本子上,等以后整理了再发,先整理下最近的吧,小厂的和hr面也不发了:

    1、个人介绍和项目以及项目中的优化点

    2、ConcurrentHashMap 1.7和1.8的区别,项目中大量数据插入较慢,是如何优化的?

    3、bio, nio, aio

    4、异步IO数据准备好后是由谁去通知应用,epoll的底层实现原理以及和select和poll的区别

    5、项目中的数据库优化是怎么做的?

    6、JVM内存区域以及一次minorGc的过程,会对应用造成什么影响(以ElasticSearch搜索业务举例)?

    7、了解SpringBoot吗?现在项目用的什么架构

    8、最近有什么感兴趣的技术,在项目中使用Netty遇到过什么问题?

    9、有时间去杭州参加二面吗?

    10、有什么想问我的?

     

    1、个人介绍和项目(又问了我怎么优化concurrenthashmap...到底咋优化)

    2、Netty怎么解决粘包问题,如果同时来两个包呢(这个问题让我很费解。。没明白是啥意思,我觉得来几个包都是一样的。。。)?除了解码器,还有什么办法避免粘包?(我说了TCP_Nodelay)boss线程和worker线程可以合在一起吗?Netty线程模型?了解原生的NIO吗?Selector上能监听哪些事件?讲一下建立连接到发送接收消息的过程,注册了哪些事件,什时候注册的?Netty bytebuf的实现原理?

    3、事务的隔离级别,mysql的默认隔离级别?可重复读和串行化的区别?实现原理?红黑树和B+树的区别?如何优化sql?索引什么时候会失效?为什么会有使用索引反而更慢的情况?explain你会关注哪些属性?

    4、left join和right join的区别?union和union all的区别?写出查询销量前三商品的sql?group by + having和where的区别?group by有哪些聚合函数?

    5、项目中对数据库做了哪些优化?垂直切割和水平切割的区别以及各自的优缺点?如何提高查询效率?什么数据适合放在redis中?易变的数据适合放在redis中吗?如何保证幂等?做过数据库的读写分离吗?

    6、线程池的原理?阻塞队列take和put唤醒是由谁去唤醒的?在项目中如何提高并发度?(我猜他的意思是提高吞吐量把)

    7、你是怎么配置springmvc,如何整合spring以及mybatis的?看过spring源码吗?项目里面用的是springcloud还是dubbo?如何设计一个上传文件的接口文档?

    8、==和equals的区别,hashcode的应用场景,如何使用hashcode提高查询效率?

    9、对Linux了解不?平时都用哪些命令?

    9、有些问题想不起来了,其余的都是些非技术问题,不列了,问的很杂,面了一个半小时。

    10、为啥选择深圳,项目TPS量级,最大的挑战,是怎么解决的,工作一年学到了什么

     

    1、自我介绍,项目技术栈

    2、IOC、AOP原理及应用,autowire的作用,如何在项目启动时加载缓存的数据?两种动态代理?

    3、redis数据类型,redis持久化机制以及落盘过程,redis在项目中的应用,在项目中是如何保证redis节点宕机时业务正常?(我猜面试官是想问数据更新的过程)

    4、lock和synchronized的区别,底层原理(monitor),sychronized可以响应中断吗?wait和sleep的区别?

    5、concurrenthashmap

    6、双亲委派模式,以及为什么需要双亲委派模式?

    7、NIO原理,BIO,NIO,AIO的区别?

    8、算法题:给出长度为N的整数数组以及一个整数A,在数组中找出所有满足两个数之和等于A的整数对(leetcode原题简化版)

    9、硕士研究方向,有什么论文,给他讲讲具体做了什么?对中台有了解过吗?(阿里2015提出的中台战略)

     

    1、项目核心技术以及架构、项目难点以及如何解决

    2、Netty零拷贝、心跳事件类型(我猜他想问的是idlestateevent类型吧)

    3、线上编程(求数组最大连续子串之和)

    4、硕士论文和pagerank(我感觉面试官对学术兴趣比较大,聊了半个小时)

    5、有什么想问他的

     

    1、最近看什么书籍,了解的设计模式,以及举例说一下你了解的设计模式应用?

    2、订单交易过程的有限状态机

    3、SpringCloud和SpringBoot的区别,为什么需要SpringBoot,rest和rpc的区别,在项目中的应用?

    dubbo有哪几种负载均衡策略。

    4、单项链表的反转,如何判断单向链表中是否有环,如何判断环的长度和入口位置?给你一串英文单词比如how are you,反转成 you are how。

    5、有什么想问的?

     

    1、项目介绍及难点

    2、redis在项目中的应用,为什么会出现粘包,reactor模型,编程题(用数组实现队列)

    3、智力题:比较简单不说了

    4、G1和CMS的区别,为什么老年代不用标记-整理,双亲委派模式,什么时候需要破坏它,有没有了解过热部署

    5、tomcat为什么性能差(让我自己去找答案-_-!),nignx负载均衡原理,kafka为什么性能高(针对项目里用到的东西问的,开放性比较高,重在理解,乱扯就行)

    6、算法题:1到n的连续数组,打乱顺序后随机找一个数,并用另一个随机数(不一定是1到N)替代它,在O(n)内找出这个替换的数(桶排序)

    7、如何提高HashMap的get和put效率

    8、覆盖索引和关联索引

     

    总结+一点感想

    总的来说就是两点,第一:基础+理解把,基础真的很重要,知其然一定要知其所以然,当然我说的是尽量哈(以我的水平也只能尽量了),尽量往深了钻,因为面试官真的很喜欢刨根问底;第二:简历,基本每轮面试都会问项目,跟着你项目里的东西去问,所以你的简历如何写可能直接决定面试官问你什么,当然也尽量多了解一些,比如数据库,关系型->非关系型->ES,多少懂一点还是有益处的;

    过程中有跟一个技术领导聊了一个多小时的机会,在西雅图微软和亚马逊待了十几年,有句话确实说的很有道理,像我这种新入职场的菜鸟是真的看不到的,技术固然重要,但让技术产生价值的思维方式更重要。至于拒offer,挨个跟Hr都打了电话,绝大部分都表示能够理解我的想法,后面保持联系(这个还真是让我很感动),http://news.sina.com.cn/c/2019-05-23/doc-ihvhiews4076648.shtml,不争馒头争口气,而且确实很舍不得这些一起来的同事,也有一些想离开的跟我做了一样的选择,就算是颗小的不能再小的螺丝钉,也不能在这个时候动摇,是至暗时刻,也是机会,趁此机会打造我们自己的生态,要么火鸡,要么凤凰^_^!无论如何,学习还是要继续的,加油!!!

    最新回复(0)