首页 / 后端Java
#

后端Java

#
52250次浏览 1029人互动
此刻你想和大家分享什么
热门 最新
腾讯 PCG 面经(二面已挂)
2025.3.24 一面很友好,很基础的八股,也没有深挖。上来先两个题:合并两个有序数组、LRU。自我介绍。实习,挖了一个场景:除了堆排序造成分页时数据重现,下面这种情况:假设一开始查询的时候只有 20 条每页 10 条。如果在翻到第二页的时候,正好新来了一条数据变成了 21 条,由于这条新来的数据应该在第一页的第一条,那么会把之前第一页的第 10 条数据挤到 11 条,那么第二页的第一条就变成了之前第一页的第 10 条了。也是出现了数据重现,这种情况怎么办呢?这个问题在一些排行榜还挺常见的。面试官引导:可不可以不管新插入等变更的,只管之前的,一般叫静态版本表,只读旧版本的,新版本的我不读。可以用一些类似 MVCC 的版本机制,但是他也没说清楚,后面忘反问了。MVCC。写一个解决哈希冲突的算法。负载因子。把 Redis 当旁路用,那就需要业务层双写。先写缓存再写数据库,没写数据库前就宕机了怎么办?简历写错了:实际上我是先写数据库再写缓存的。你项目中雪崩和穿透的解法。为啥选 RocektMQ 不选别的?Redis 持久化策略。对于你的项目,如果让你选个持久化策略,你选什么?反问:业务,打开腾讯视频的第一层就是我们、还做弹幕、评论社区什么的评价:能抓住核心矛盾,条理清晰,能表达自己的理解挺好。一面当晚就过了,3.25 约二面。————————————二面————————————3.27 上来也是做题:1482. 制作 m 束花所需的最少天数。不会做,一直没什么思路,面试官一直尝试引导,但还是没做出来,想换题被拒绝。还有点被压力,说没做过的题型就不会了吗?半小时没写出来,后面就不想问啥了,自我介绍都没有。然后出了两个场景:1. 一个巨大的列表 L 有非常多 URLs,然后一大堆请求 URL 来判断列表中是否存在请求 URL 的前缀,怎么做?2. 安装了反诈中心的小米手机,用搜狗输入法在微信里发广告信息给另一个用华为手机的朋友,谁先看到这些信息,排个序:小米手机、搜狗输入法、微信、反诈中心、淘宝等广告商、华为手机。秒挂。反问:场景 2 答案是什么?没答案。很沮丧,面试前复习了很多计网和 OS,项目也没被深度拷打。要多多刷题了,不然第一关都过不了。
我才不是耗子:这二面也太难绷了 什么小众宝藏题目
查看15道真题和解析
点赞 评论 收藏
分享
速通美团,团黑子变回团孝子
神奇的地方就在于鼠鼠一天搞定一二面,得出结论实力是基础,主要看运气。其他大厂也投了,鹅和tme被挂了,阿里投的晚,流程走的相对慢,就被kpi面过一次,其他的就直接在五一之后了。offer timeline:3.27 投递简历3.29 笔试(只撕出来一道题)3.31 约面(我推到清明节后)4.8 下午一面(问的主要是点评项目,拷打redis,简单问了java里的锁)当晚邮件约二面4.10 下午二面(主管超级和蔼,但我午觉睡懵逼了,手撕写的极差)除去周末,隔了3个工作日没消息,第4个工作日早上进库。中间又隔了3个工作日流程结束,后面第二志愿也完全没捞我,流转到第三志愿 都喜欢4.23 又是午觉正睡着呢,一个电话过来约面,基础研发平台约到4.25周五面4.25 一面(手撕两道,一道k个一组反转链表,一道找前k个最小数,我直接优先队列)当场约的二面,就在同一天4.25 二面 面试官比较严肃(面试时间不长,但也有手撕,旋转矩阵,背了方法)4.27 没oc直接offer,光速变回团孝子。第二次面试,面试官不太关心实习生当下会不会他们组正在做的事,而是更关心基础牢固与否,项目理解程度有多深,还有就是思维逻辑是否清晰,以及临场反应吧。我两次面试都是拷打项目和用到的redis,os和计网还有mysql的八股也不少,但java八股基本没太被问到(其他公司面试也是不太问Java本身的八股)。感觉还是手撕比较重要吧,像美团的手撕大概率是hot100里的经典题,还是好好准备下不然经典题写不出来太亏了。我被挂的面试基本都是手撕没出来,即使有比较细节的思路没跑通也算没撕出来直接挂。鼠鼠祝大家沉着应试,超常发挥,超好运气,都有offer!!!
点赞 评论 收藏
分享
招银网络科技
一笑而过2222:一、线上一面(9.13) 1. 反射 - 答案:反射是Java语言特性,允许程序在运行时动态获取类信息及创建对象、调用方法和访问属性等。可通过 Class.forName("类的全限定名") 获取 Class 对象,再用其进行如 newInstance() 创建实例、 getDeclaredMethods() 获取方法等操作。 2. 常见的设计模式 - 答案:常见设计模式包括创建模式(单例、工厂、抽象工厂等)、结构模式(代理、装饰器、桥接等)和行为模式(观察者、策略、模板方法等)。例如单例模式保证一个类只有一个实例并提供全局访问点,可通过饿汉式或懒汉式实现。 3. 线程池 - 答案:线程池由管理器、工作队列、工厂和拒绝策略等组成。核心是预先创建线程放池中,有任务时从池取线程执行,若线程忙则任务放队列等待,线程完成任务回池。可避免频繁创建和销毁线程开销,提高性能和资源利用率。 4. 排序算法相关 - 答案: - 冒泡排序:通过相邻元素比较交换,将最大(或最小)元素“冒泡”到一端。从第一个元素开始,比较相邻两个元素,顺序不对就交换,一轮后最大元素到最后位置,对剩下元素重复。 - 插入排序:将待排序元素插入已排序部分合适位置。从第二个元素开始,与前面已排序元素依次比较,比前面小就将前面元素后移,直到找到合适位置插入。 - 选择排序:在未排序数组中选最小(或最大)元素,与未排序部分第一个元素交换位置,一轮后最小元素到第一个位置,对剩下元素重复。 - 快速排序:选“枢轴”元素将数组分两部分,左边小于枢轴,右边大于枢轴,对两部分分别快速排序。选第一个元素为枢轴,从两端向中间移动,将小于枢轴元素移到左边,大于枢轴元素移到右边,两端相遇时枢轴位置确定,对两部分分别排序。 - 归并排序:将数组分成两部分,分别排序后合并成有序数组。将数组分成左右两部分,对两部分分别排序,用两个指针分别指向两部分第一个元素,比较大小,将较小元素放入新数组,移动指针,重复直到元素都放入新数组。 5. HashMap,ConcurrentHashMap相关 - 答案: - HashMap插入过程:先计算键哈希值(通过 hashCode() 及扰动函数),根据哈希值确定桶位置。桶空则直接插入;桶不空且只有一个键值对且键相等则更新值;桶不空且是链表(或红黑树,链表长达到一定阈值且数组长达到64时转换)则遍历找键相等键值对更新值,否则插入末尾。 - ConcurrentHashMap插入过程:类似HashMap先算哈希值确定桶位置,采用分段锁机制,将哈希表分成若干段,每个段有自己的锁,插入时确定所属段,获取锁后插入,完成后释放锁。 - HashMap底层是数组+链表(或红黑树)结构,数组长为2的幂次方,链表长达到8且数组长达到64时转换为红黑树。 - ConcurrentHashMap底层是分段锁结构,由若干个段组成,每个段类似小型HashMap,底层也是数组+链表(或红黑树)结构。 6. ioc和aop - 答案: - ioc(控制反转):核心是将对象创建和管理控制权从程序转移到容器(如Spring容器)。传统程序自己创建和管理对象,ioc模式下由容器根据配置文件或注解等创建和管理。 - aop(面向切面编程):核心是将横切关注点(如日志记录、安全检查、事务管理等)从业务逻辑中分离出来,以独立切面形式处理。如应用中很多业务逻辑方法需日志记录,有aop可将日志记录作为切面,通过配置文件或注解实现对所有业务逻辑方法的日志记录。 7. redis线程模式及速度原因 - 答案:redis采用单线程模式(单线程处理核心业务逻辑,有辅助线程处理其他任务)。快的原因包括数据结构简单(使用字符串、列表、集合、哈希表等)、内存操作(主要在内存中,避免磁盘I/O延迟)、事件驱动(有事件发生才处理,避免不必要等待和资源浪费)。 8. 链表插入排序 - 答案:定义已排序链表头节点(初始为空)。遍历原始链表,若已排序链表为空,将当前节点作为头节点;否则从头节点开始比较,若当前节点值小于头节点值,插入头节点之前;否则继续找合适位置,直到找到节点值大于当前节点值,插入该节点之前。最后已排序链表是原始链表排序结果。 二、线下二面(9.20,合肥) 1. redis宕机怎么办 - 答案:首先故障诊断,查看日志文件了解原因(可能是内存不足、硬件故障、软件冲突等)。针对原因处理,如内存不足增加内存、优化策略;硬件故障更换设备;软件冲突解决冲突。恢复时考虑用备份数据恢复,无备份数据根据业务需求和实际情况采取不同方法,如重新创建部分数据。 2. 接口设计原则和安全性保证 - 答案: - 接口设计原则:单一职责(一个接口负责一项功能)、可扩展性(便于添加新功能)、简单性(设计简单明了)、稳定性(保持稳定,避免频繁修改)。 - 保证安全性方法:身份验证(用户名和密码、数字证书等)、授权(根据身份给予不同授权,限制访问权限)、加密(对传输数据加密,防止窃取)、完整性检查(对传输数据完整性检查,防止篡改)。 3. 一个用户同时登录两台设备处理方法 - 答案:在服务器端设置用户登录状态表,记录登录状态和设备信息。当一个用户在一台设备上登录时更新表,记录登录设备信息和时间。当同一用户在另一台设备上登录时,检查表,发现已有登录则发送退出登录指令给已登录设备,同时更新表记录新登录设备信息和时间。 4. 数据库表的设计原则 - 答案:设计原则包括第一范式(表每行具唯一性,每列基本数据类型,不含其他列内容)、第二范式(满足第一范式且每列与主关键在于逻辑上有联系,不与主关键在于其他列上有联系)、第三范式(满足第二范式且每列与主关键在于逻辑上有联系,且不与其他列在逻辑上有联系,除非通过主关键在于间接联系)、节本原则(避免复杂表结构,保持简单明了)。还需考虑索引设计,合理设置索引提高查询效率。 5. qps和tps的区别 - 答案:qps(每秒查询数)指每秒能处理的查询请求数量,用于衡量系统查询处理能力;tps(每秒事务数)指每秒能处理的事务数量,一个事务是完整操作序列,可能包括多个查询操作,用于衡量系统事务处理能力。 6. 数据库索引失效场景及行锁升级情况 - 答案: - 索引失效场景:索引列上进行四则运算;索引列使用错误的索引类型;索引列上的字符串使用未设定好的字符串格式。 - 行锁升级情况:未提及明确的升级条件,可参考一般数据库知识,如当锁冲突严重、需要对表进行整体操作等情况下可能升级为表锁。
点赞 评论 收藏
分享
2024-07-15 15:52
已编辑
门头沟学院 Java
字节后端开发 一面凉经
岗位是暑期转正,当天投递当天约面,因为私事推到7/10。包括笔试时间总共面了100分钟左右。结果:结束后第三天hr说面评还不错,但是手撕题调试太久不太熟练,没给过。面试体验不错,面试官也很给机会,让我调试了挺久。1、自我介绍2、项目难点介绍(我做的是知识图谱系统balabala)3、围绕项目提问+就着项目的界面实现给了场景题(答出来了)项目答的不错,开始八股4、IoC和AOP的原理、优点(我balabala讲了很多)。AOP的实现(动态修改字节码etc)。5、操作系统的用户态和内核态。能否没有用户态?围绕这几个点深挖(我讲了安全性,就地举了好几个例子,提到对象逃逸、死锁、内存溢出、IO阻塞等知识,答的还行)。6、Mysql数据库事务原理。事务隔离级别。可重复读的应用场景。undo log、redo log、binlog的执行顺序。7、JVM的内存是如何分配的(开始吟唱)。为什么元空间放到直接内存?为什么要预分配内存?围绕这几个点深挖。手撕Hard 单词拆分 II:给6、7分钟问我思路。我说dfs+回溯,用栈讲了一下具体做法,然后我说了一下优化思路。面试官说没问题。开始做。15-20分钟问我做出来没,又给了我5分钟。最终没有调试出正确结果,错在边界判断导致结果有问题。substring我以为和python切片一样,右索引可以无限......反问环节。面试官让我尽情提问,我问了5个问题,包括业务、我没答出来的技术点等。最后友好地问我还要提问吗,遂不好意思,结束面试。八股和场景基本上都答出来了。隔天重做手撕后发现就差一点就对了,还是手太生。背景:3月底才从零开始复习八股和刷题,5月初写简历才开始投递。真的太晚了......总结:字节从hr到面试过程的环节都不错,通过这场面试也让自己收获了不少。从滴滴DT秋储(第一次面,不堪回首)-> 微信支付 ->抖音直播,确实是越面越好,实力不济间接导致运气差点,还得好好沉淀吧。希望大家都顺利。   
查看8道真题和解析
点赞 评论 收藏
分享
2024-06-20 15:29
复旦大学 Java
点赞 评论 收藏
分享
2024-07-22 17:19
门头沟学院 Java
二本学历应该直接去干低代码还是准备秋招
点赞 评论 收藏
分享
玩命加载中
牛客网
牛客企业服务