面经来源

作者:惊鸿一面小萝卜 链接:https://www.nowcoder.com/discuss/667956?source_id=discuss_experience_nctrack&channel=-1 来源:牛客网

1.讲项目?

2.线程和进程的区别

3.数据库索引是什么?优缺点?

4.索引底层结构?

5.B树和B+树的区别?

6.红黑树是什么?

7.怎么解决线程冲突?

8.http请求过程?

9.http可以处理多个请求吗?

10.域名劫持?

11.实现查找数组中第K大的数,使用的优先队列,貌似他不是很满意


2020.7.29作业帮二面java开发下午4:00大概30分钟

1.介绍项目

2.http和https的区别

3.https的缺点?为什么还是使用http的多?

4.get和post的区别?

5.integer和int 的区别?为什么要用包装类型?hashmap为什么只能操作object?

6.垃圾回收算法有哪几种?

7.Arraylist的底层如何扩容和缩容?

8.手撕sql:求全年纪前10的学生信息和成绩

9.手撕sql:求各班前三的学生信息和成绩???

10.sql注入?为什么预编译可以防止sql注入?

11.spring 框架的启动过程?Springboot的启动过程?

12.Spring mvc的请求过程?

13.介绍你了解的设计模式?单例模式工厂模式代理模式适配器模式观察者模式

14.为什么要用设计模式?设计模式的优点?

15.redis 中的过期淘汰策略?LRU的底层架构?

16.场景题:一亿个电话号码如何存储?查找一个电话号码?效率提升了多少?

17.类型的链表,对链表进行排序,规则是字符串长度逆序+字符串内部按 ascii码升序排序

LRU算法,内存容量大小为4,给我一个序列,好像是1 2 3 4 5 1 2 3,让我讲一下缺页中断和页面置换的过程,最后内存里留的序列。




1.公司简介

百度百科

https://baike.baidu.com/item/%E4%BD%9C%E4%B8%9A%E5%B8%AE/13003995?fr=aladdin

作业帮没用过应该也听过吧,不多说公司了,这里闲聊几句:


我上学的时候,如果有不会的问题有三种方法:

1)问老师。老师很乐意回答,如果你总是不问问题,还会找你

2)问同学。同学更乐意回答,因为他们会收获我真挚崇拜的目光和感谢

3)自己解决。解决不了就从第一步开始

有人会想怎么不问父母?因为我父母辈的人普遍学历不高,都是从艰苦年代过来的人,吃饱饭都是问题,想学习也没条件,而且那个时代有问题不问老师是很不正确的事,会变成另类的,哈哈~


然后现在时代变了啊!有问题,可以选择各种APP解决,如果题目比较难或是很着急,还可以使用金钱的力量,这叫知识付费,确实给很多普通人带来了额外收入的机会,不多做讨论了~


2.面试分析

1)面试时间:长,两次面试呢,问题也不少

2)面试内容:多

3)试题难度:中级+

4)试题拓展:广

5)核心考点:

一面:项目+多线程+数据库索引+数据结构+http协议+算法

二面:项目+http协议+Java基础+垃圾回收+集合+sql基础+spring系列+设计模式+redis+场景应用(大数据量搜索,可能想考察es)+算法

6)总结:社招必问项目记住了。总体不算难,最后的问题应该是想考察一下能力上限,底层有,应用也有,能够看出是不是只会CRUD。


3.提升建议
1)技术提升:很多问题都会涉及到数据结构,但事实是很多程序员在数据结构能力很弱,即使是工作5年以上的也会这样。


为什么呢?

一个是因为数据结构是大学课程,那么很多人不懂就可以理解了。另一个原因是因为一般程序员工作前几年根本涉及不到数据结构的问题思考,就像你从未经历过战争,会思考战争中怎么活下去吗?


那怎么提升呢?

坚持练习算法,既能提高算法能力,又能对数据结构掌握深刻,还能帮助面试,何乐而不为呢?


2)面试准备:可以看一看公司往年面试题,提前准备准备。


3)面试技巧:面试不要害怕问题多,这就像相亲一样,两个人坐下来,除了吃饭问了问喜好,就没其他话了,你觉得能成吗?问题多,说明至少面试官对你感兴趣,那就要把握好了,把面试官往自己擅长的方向去引导。很多人在这块做不好,现在线上面试很多,你提前把自己擅长的内容写下来,遇到相关的可以快速联想,这又不算作弊。


大家有什么关于面试想了解的内容,可以在文末留言~