首页 / 后端
#

后端

#
2825133次浏览 45168人互动
此刻你想和大家分享什么
热门 最新
26届美团暑期实习后端开发一面面经(面完马上约二面)
总结:项目+算法+围绕简历问八股,感觉是贴主面得最差劲的一次,比之前的腾讯和阿里都要差(背的八股记得不太熟练),结果面完不一会就约二面了有点出乎意料,3.25已oc首先自我介绍还是老套路把面试官往项目上引1.问在项目中参与的角色,以及为什么做这个项目答:个人项目,参照开源项目做的,为了深入学习Spring开发流程(略)2.你在项目中redis和数据库的一致性保障怎么保障答:采取“先更新数据库,再删除Redis缓存“的策略,引入消息队列,让消费者来删除缓存,如果失败可以重新消费,这种重试机制进一步保证了一致性。(补充:还可以通过订阅MySQL的binlog,用里面的数据库更新信息来操作更新缓存)3.采用Kafka作为消息队列如何就能对系统进行解耦呢?答:Kafka采用异步通信形式,将生产者和消费者解耦,生产者将消息发送到Kafka,消费者从Kafka中读取消息,生产者和消费者不再直接依赖于对方的实现,彼此之间不需要知道对方的存在,只通过消息队列来传递信息。这种模式使得两个系统之间的耦合度大大降低4.那了解Spring微服务框架吗?答:不了解,我的论坛系统项目是基于Spring Boot开发的,没有使用Spring Cloud5.那Spring Boot和原生Spring之间有什么差别答:原生Spring配置起来更为复杂,需要写很多的xml,而Spring Boot配置更为简单,开发起来可以更注重于业务逻辑而不是繁琐的配置6.问项目二,你为什么会想去自己手写一个Spring框架答:深入自己对Spring框架的理解,进一步的了解他的底层7.那Spring的IOC你是怎么理解的答:(我把IOC和依赖注入一起讲了,后面面试官提醒我只需要讲IOC),就是把需要自己通过代码进行管理的对象创建和依赖关系管理交给Spring容器,这减少了应用程序中的耦合度,提高了代码的可维护性和扩展性。8.面试官发现我简历上手写Spring框架采用了TDD开发模式,说她们自己在工作中都很少会用到这种开发模式,感到很惊讶,询问我为什么使用TDD开发模式?(我跟着卡哥做的手写Spring,跟着用的TDD)答:背诵了项目面试题里的TDD开发模式流程与好处9.其实我只是想问你是因为什么导致你去采用这个TDD开发模式答:(答了好处居然都不好使,我瞎编说是浏览文章时学习到了这个开发模式,所以就想应用一下试试看)10.那你应用完这个开发模式后学到了什么?答:因为是先写测试用例再写逻辑代码,使得代码错误率降低,开发出来的代码质量更高,学到了以后写代码前都认真准备相应测试用例,避免出现更多bug11.jvm内存结构答:(之前背过但有点忘了,甚至因为试图去想起来的时间太久,面试官还调侃我刚刚不会是去问ai了吧)粗略说了堆区和栈区12.看你项目中用了ThreadLocal,说说用在哪答:说在论坛项目中,获取当前登录角色,使用ThreadLoacl使得每个线程都能获得一份互相独立当前用户副本13.那ThreadLocal的实现原理呢?答:(之前用的时候粗看过,但是后面忘了)老实交代不熟悉14.那你在项目中使用了哪些设计模式答:创建Bean使用工厂模式,实现JDK动态代理和CGLIB代理使用了代理模式,许多代码块使用了模版方法模式,实现MVC时请求的传入处理过程采用了责任链模式15.责任链模式优点答:解耦,将每个阶段独立开来,可以对此进行单独配置扩展16.那你使用责任链模式的时候,要是我中途一个阶段出现了问题,我前面的数据怎么进行回滚答:(完了盲区)老实交代我做的MVC处理请求这里没有涉及事物的回滚,这方面我不熟悉17.那我在一个代码块里大量使用了if-else,采用什么设计模式优化好答:策略模式,将不同的逻辑封装成不同策略类中18.数据库的隔离级别了解吗?答:Read Uncommitted,Read Committed,Repeatable Read,Serializable19.Repeatable Read具体是啥,怎么实现的答:可重复读,就是多次读取数据是一致的,通过加共享锁和排他锁,或在MySQL中通过mvcc实现,原理就是通过read view...20.那什么是排他锁?答:施加了排他锁的数据,在给他施加排他锁的事务释放锁前,其他事务都无法读或写该数据21.那你举例一个发生死锁的场景,并说解决方法答:没答对(面后补充:假设这个数据库隔离等级为可重复读,比如我在一个订单表里,每次插入操作前想保证操作幂等性,先查查表里有没有这个id的订单,就执行select。。。for update,这时有两个不同的事务一个查了id为1007的,一个查了id为1008的,这时候两个事务在查找for update时都获取了间隙锁,因为间隙锁是可以兼容的,所以两个表都获得了,但是后面两个表要执行插入操作前要插入意向锁,但是意向锁不兼容间隙锁,两个事务都在等待对方释放锁,就造成了死锁。除了在设计层面避免出现死锁的场景,在发生死锁后可以通过设置事务等待锁的超时时间,超时则回滚避免死锁,或者添加死锁检测机制,检测到系统死锁就对事务进行回滚)22.MySQL的索引了解吗?一级索引二级索引说一说?答:了解,(八股背少了,一时没想起一级索引二级索引是啥)说了个主键索引和非主键索引23.索引的底层实现是什么?答:B+树,数据存储在叶子节点,节点直接像链表一样用指针相连,对查询范围数据很有效24.(很明显对我MySQL不太满意)你们学校学MySQL了吗?Java呢?答:学了MySQL,但Java是选修课25.(面试官默认我是研究生,其实我是本科生)那你在学校实验室里和导师做哪方面研究呢?答:说自己是本科生,没有导师做研究26.那你在学校有和老师做什么研究吗?答:有个大创项目,是无人机路径规划,但是是机器学习方面的,不是我的侧重点27.那你实习能实习几个月,一周来几天?答:我说我不是研究生学校束缚不了我,可以四月干到九月,一周出勤五天及以上28.你自己的优势?答:对新技术的学习比较热爱,学习能力和规划能力比较强,比如我的项目,Java以及Spring相关的学习都不是学校教学的,是我通过自己指定计划自学的,再运用到实际开发中来。29.那你是怎么自学的?答:csdn找文章,b站找视频,制定好学习路线,通过跟着视频、文章,或者阅读Spring的官方手册文档,循序渐进的进行学习30.算法题又是快速排序,之前腾讯面试也是快速排序,给了十五分钟5分钟不到速通了,原本十五分钟后差不多就到时间了,后悔写太快了,导致后面问我有没答出来的31.Redis缓存穿透、缓存击穿、缓存雪崩,及其解决方案答:Redis三剑客,八股照着背32.Redis主从复制答:有主服务器和从服务器,Redis会将数据从主服务器复制到从服务器上,哨兵机制保证主服务器宕机就切换到从服务器,这样不至于主服务器宕机后Redis就无法使用33.看了简历上写了GC,就问GC的的垃圾回收器有哪些答:(后悔了面之前简历没有背牢)答非所问的回答了垃圾回收算法,因为回收器我记不得了只记得算法34.你使用Kafka有遇到重复消费吗?重复消费会怎样?答:重复消费会导致通知推送多次,比如QQ发一条消息应该只推送一条通知,重复消费的话推送多条通知35.(面试官之前问出来我MySQL掌握不牢,最后两分钟继续发问MySQL)那sql如何优化?sql执行后底层是怎么样的?答:瞎说了几个感觉的sql优化方式,然后执行后底层回答不知道(面后补充:sql优化首先从索引入手,可以尝试使用覆盖索引,这样可以避免查询时使用二级索引引发的回表问题,插入数据时多行插入,以及为数据库引入缓存等;以一条select语句为例,首先MySQL由Server层和存储引擎层组成,首先在Server层先经过连接器,通过用户输入的用户和密码尝试建立客户端与服务器的连接,连接完成后进行第二步,第二步查找缓存,Server以键值对的形式存储sql查询结果,key为sql语句,value为查询返回值,如果查找到对应的key则直接返回value,否则进行下一步,但是这个查找缓存的功能在经常更新里的数据库很鸡肋,在MySQL8.0之后就被删掉了,然后呢就Server层的解析器,解析SQL语句,首先进行词法分析,提出select,form这样的关键词,然后对sql进行语法分析,判断语法正确与否,正确就构建SQL语法树,不对直接返回报错,正确之后呢就进入SQL执行过程,首先预处理阶段,看看是否有这个表或是否有对应字段,然后进入优化器阶段,确定SQL的搜索方案(就是根据索引搜索成本选索引),然后执行器和引擎交互执行SQL。然后在引擎方面,如果select传进来是主键,就直接在主键索引建立的B+树,由根节点进行二分查找找到主键key的指针,再递归指针指向的节点,找到对应数据返回,如果传入的是二级索引,则要在二级索引树上找到主键索引再去重复上述过程,最终将找到的结果返回给客户端。)反问流程:感觉自己面得稀碎,都不好意思反问,直接道谢下播了没想到刚面完一个多小时,美团就来电话约2面了
嵐jlu:贴主会更新每一个面试的面经,可以点进贴主主页查看其他面经(都会写的详细),可以关注我获得最新面经通知。
点赞 评论 收藏
分享
04-22 21:47
门头沟学院 Java
京东提前实习两个月跑路
王瑞_:tme腾讯音乐10点20早会,中午午休两小时,晚上6,7点走,自愿加班白天就轻松一点,9点也是有人在的。工资不低,可以说性价比非常高。
投递京东等公司9个岗位
点赞 评论 收藏
分享
06-28 16:26
已编辑
九江职业技术学院 Java
大专大一学习了一年Java的有感而发
我的专业是软件技术,从大一开学前的暑假开始确定方向学java基础,然后到12月份差不多Java,Mysql,SpringBoot,Redis,Rabbitmq,微服务相关都学完了,跟着视频敲了一个单体项目,两个微服务项目。到寒假期间我学了前端的相关内容,html,js,ajax,Vue,然后3月份网上找了个全栈的项目学习,敲了一整个月并且部署了一下。4月份开始学juc和jvm,然后在面试鸭和小林coding上背八股,记笔记。然后4月底到5月份开始投,用本科大三身份投的,整个5月就是投简历,然后不断复习八股,复习项目。沟通到300多才有一家南京的小厂java面试,拷打八股,拿了offer,但是坦白身份之后被无情拒掉了。然后又有一个上海小厂全栈的实习,只问项目,offer也拿到了,同样坦白后挂了。后面还有几家面试邀请我都忽略了,因为6月份后面就摆了。之后尝试用专科大一身份投了一会,没有任何反响就放弃暑假实习的打算了。我知道我的学历不好,目前的打算是大二下开始准备学升本。计划大二开始学习算法,然后写写自己的项目,然后再多学习些后端和前端的技术。我很羡慕那些大一大二实习的,我知道我专科没有任何机会。而且听说之后专升本学历会被歧视,不知道有没有专升本学历的说说就业情况。与各位共勉,大家一起加油,我也经常焦虑迷茫,觉得自己学得不够,学得太浅,开始投的时候也怀疑过自己学的是不是符合企业要求。但是不能放弃,要坚持下去,继续学
0offer引力失效...:只能试试专升本了兄弟,不过也别丧气,大一实习别说专科,就算是92能过简历初筛的也屈指可数,最早的那批基本上也是得大二开学了
点赞 评论 收藏
分享
26届美团暑期实习后端开发二面面经(已oc)
总结:没问专业知识+闲聊+hard算法,36min(居然没问专业知识,一面感觉面得不好害怕是kpi面)最新进展:第二天就oc了自我介绍,大二Cpp程序竞赛省奖+国奖,大三做独立全栈Java项目1.你觉得C++和Java的区别答:回答语法方面差别不大,主要区别在内存方面,cpp需要自己手动管理内存,有内存泄露风险,Java中的JVM有GC(垃圾自动处理机制),不用自己手动管理内存,会自动回收不被引用的对象,但正是因为Java有GC机制和JVM,所以运行速度要比cpp要慢一些。2.那你学习JVM和GC有遇到什么困难吗答:我学习的主要是理论方面知识,比如JVM的内存模型,GC的回收算法和回收器,因为这些都是Java隐式执行的,不需要我自己去操作调用,只学习理论方面对我来说没什么困难,主要就了解他的底层。3.说说你在学校里最有成就的事答:说了大二研究算法最后获得省奖、国奖;和大三独立做项目,花很多时间去学习新技术,最后项目功能完善的成功上线,获得巨大成就感4.问我项目的开发过程,为什么我独立做,没有其他组员协助答:老实交代以宿舍为单位分组做,舍友学习进度没有我相对那么好,也没有我那么热爱,就一个人做5.你不会不爽吗?不去压力他们吗?答:都一个宿舍的,和睦一点很有必要,我有能力多帮帮他们也挺好的6.那如果你入职之后,组内有成员也不做事,让你多做,你会怎么办答:如果他一时间抽不开身,我可以帮帮他多做一点,要是他一直这么干,我就要反映给领导了7.你们宿舍的人打游戏吗?你和他们一起打吗?答:都玩,但是我没和他们一起玩8.你玩游戏多吗?都玩什么游戏?答:玩的不算多,最喜欢玩《炉石传说》,有闲暇就会玩两把,从初中就开始玩了9.炉石传说是偏策略的对吧?那你在项目开发中,有别人提出什么意见吗?你又是怎么做的?答:有的,我会和班上其他高手一起讨论项目的开发,比如我的项目系统最先是将用户密码明文存到数据库的,但是和其他同学讨论,他们说我这样存不好,我就参考了他的意见,最后采取MD5加密与加盐的方式将密码以加密的形式存到数据库,这样即使我的后端数据库被攻破,也无法从中直接获取用户密码,进一步确保用户信息安全性。面对别人对我方案提出的意见,我都会虚心的接受,然后一起纳入我的考虑范围,我觉得别人能给我提意见这是很好的,能帮我考虑的更周全。10.你现在在长春是吗?老家哪的?答:是的,老家广c人11.你平时喜欢什么体育锻炼,来释放自己的压力?答:之前有健身,但是后面沉醉于研究算法和做项目,就有段时间没去了12.如果现在让你入手一个新项目,你会怎么入手?答:首先去阅读项目的文档,了解这个项目运行的基本逻辑,掌握项目的使用方法13.还有呢?答:假设我接手之后要负责后端数据库方面,那我就去仔细了解后端数据库方面的逻辑与构造,然后根据需求或者发生的问题去针对性的作出更改14.如果项目里有涉及新技术呢?答:新技术的话我反而会比较兴奋,因为我开发项目和做算法都是一直在学新的东西,还挺喜欢新的技术的,一门新的技术出现,我会去查资料、看文档、看相关视频,尽快的把这个新技术消化,然后运用到实际项目中来15.你实习的话能几月到岗?答:我说我时间比较自由,4月就可以到岗,可以干到9月、10月16.那你学校的课程呢?答:我说我必修课已经修完了,现在只剩下选修课17.选修课没有要求吗?答:说选修课教的都是很过时的技术,比如20多年的JavaWeb和jdbc,为了拿到学分我只需要完成期末的大作业就行,远比不上去企业学习前沿的技术来得实在18.算法题:LeetCode 25. K 个一组翻转链表(查leetcode前都没发现居然是hard算法,还以为是mid)这题是写过的,还是和之前一样速通ac了,耗时6分钟这时候才过去半小时,面试官让我反问:1.面试官负责什么业务?2.实习薪资如何,能负担得起我过去租房居住吗?结束,许愿oc,求求别是kpi面!
不要开盒我:问这种基本上是稳了
查看18道真题和解析
点赞 评论 收藏
分享
双非暑期五轮面试上岸字节
个人bg:双非本硕,一段小厂实习、本硕年级第一简历项目:马哥短链接(主项目)、本科横向包装(副项目)目前面试,一些中小厂面试(基本都过了,也去了某中厂干了一个月,刚好结束去字节),腾讯暑期基地后端开发&客户端开发两面(挂),字节byteintern后端开发五面(offer)时间线及面经一面(1小时40分钟):1. 开局自我介绍2. 介绍实习期间做的事情(面试官表示:我的风格喜欢从你做了啥,克服了什么困难,来看你的学习能力)3. 介绍项目4. 项目提问,包括布隆过滤器误判情况解决,布隆过滤器接近满了怎么办,布隆过滤器元素能删除吗?必须要删呢?重定向问题,永久重定向还是临时重定向?项目中用到的索引,接口被人恶意刷怎么办,限流从哪些角度进行的?消息队列重复消费,幂等业务如何保证,为什么不直接MySQL层面用唯一索引解决?(这个唯一索引的点没有把面试官说服,我开始扯范式设计,给人家整笑了)5. Redis各分布式锁对比,通过高可用和实时性角度说明,介绍一个相对比较平衡的6. 手撕:二叉树转链表7. 缓存雪崩、缓存穿透、缓存击穿8. 令牌桶和漏桶,漏桶的匀速请求代码具体怎么实现的?9. 手撕:面试官现场出了一道题,1TB日志数据,结构为user action timestamp count,选出最受欢迎的前十个用户,受欢迎程度用总count表示,写出Map和Reduce函数。二面(1小时3分钟):1. 开局自我介绍2. 介绍项目3. 项目深挖,比一面还详细,具体到了表设计,索引考虑,分表键,分表算法,为什么用这个,和别的对比,分表分了多少表,每个表的数量有多少,最大可以存多少,需要考虑那些因素,除了分表还有其他解决方案吗,分表带来的弊端,缓存三件套情况,过期字段设计,带过期时间的具体查询怎么写的等等4. 项目延伸八股:Redis缺点,Redis的常见数据结构以及使用场景,Set底层,布隆过滤器各操作时间复杂度,平替品等等,项目主要使用Redis因此主问Redis八股。5. 其他问题:关于大数据的处理(因为他们部门好像就是做数据处理相关的东西)6. 手撕:合并区间三面(1小时6分钟):1. 开局自我介绍2. 介绍实习3. 介绍项目4. 硕士研究方向,开始问深度学习相关5. 项目拷打,但是没有二面问的深,大体关于缓存一致性等,然后基于项目给出的场景设计题6. Redis架构模式,主从&集群,用这个架构存十个亿的数据的缺点?如何优化?了解过第三方的一些优化框架吗?7. Redis的过期删除策略8. 零帧起手,大数据:(没错,预判到了,我就说前两面怎么有点喜欢往数据处理方面问)MapReduce,Hadoop,Spark,Hbase,HDFS9. Java HashMap的put过程10. HashMap线程安全吗?为什么?如何让它线程安全?11. 红黑树,vs平衡二叉树12. CAS,Java的CAS怎么实现的?13. AOP相关,怎么实现,代理模式,不用代理模式怎么实现AOP?听说过...吗?( 没听清楚,应该是个啥框架)14. 我现在有10亿的数据,找出最大的100个(考虑内存和不考虑内存)15. MySQL主键为什么一般用自增16. 再次回到硕士研究方向,面试官说有个地方没有很听明白,又说了一遍17. 手撕:跳跃游戏(贪心秒了),完成后说思路 + 时空复杂度HR面(47分钟):在校生活问题就略了加面(33分钟):1. 开局自我介绍2. 介绍项目3. 询问做过最难的项目,以及亮点4. 项目再次拷打,不是很深入(基本就是一面的项目提问内容再反复吟唱)5. MySQL Innodb 索引结构相关 vs 其他结构6. 你遇到过一句sql执行的很慢的场景吗?能说说为什么以及怎么解决的吗?7. 遇到过数据倾斜吗?怎么解决的?8. 流式计算接触过没有?Spark Streaming,Flink……?9. Java中什么时候需要重写equals10. TCP/IP相关11. JVM相关 类加载器 双亲委派模型等12. 我现在有两个文件,每个文件10亿个URL,给你个内存非常小的计算机,找出两个文件中相等的URL13. 总结,速度很快,无算法题。加面完第二天offer个人感受:双非冲大厂太难了,字节投了很多基本都简历秒挂,给了机会的这个部门可算是面试中的良好发挥把握住了。其实个人感觉大家别因为看到网上大佬们天天都在各种面试而焦虑,我实习的时候另一个实习搭子一会儿面作业帮,一会儿面携程,后面又面美团,面试真的超级多,而我面试机会就挺少的,但是只要好好把握,尽可能把自己的面试成功率提升,这样别人面几十家还没上岸但你面一两家就能offer也能曲线救国!祝大家的暑期实习成功!春招的朋友们也能顺利上岸!
L1uer:到岗时间也是和hr商量吗 还是hr来定 怕约的到岗时间太后hc给别人了
点赞 评论 收藏
分享
玩命加载中
牛客网
牛客网在线编程
牛客网题解
牛客企业服务