第一场面试,哔哩日常实习

一面 12/11中午约面 在12/12 近 1.5h

项目:

大部分时间在问第一个项目,但第一个项目是crud+秒杀,说是简历凑字数不过分。

  • 说一下鉴权模块JWT怎么保证唯一性的(头部+负载+密钥+加密算法
  • 举了同端登录不同账号,不同端登相同账号一些边界场景,会发生什么 怎么处理的(没考虑和不清楚前端localstorage
  • 解释一下这个SSE服务发送事件(介绍并比较了sse与其他主动推送技术 长短轮询 websocket
  • 为什么引入redis(比较了下redis与jvm内存和持久化数据库
  • 涉及分布式锁要考虑什么(分别从分布式的需求和锁的性质 重入性 过期时间设置一些方面说了
  • mq为什么用redis stream而不是市面成熟mq(满足需求就用了
  • redis节点宕机会怎样,怎么办,在stream的消息会丢失吗(有持久化
  • 接受延迟,想要高可用,怎么设计(我也不知道设计什么

八股:

  • new一个对象,对象头都有什么信息(类型信息(可能,看引用实现,默认是有) MarkWord 说了markword会存的 轻重偏锁标识、线程标识、加锁状态、哈希值,忘了分代年龄
  • 线程都有哪些状态(分别从os、java api两角度说了
  • redis数据结构了解哪些
  • 基于aspectj的aop,和鉴权那里的那种拦截器,什么区别(应该分别是静态代理和动态代理,当时没说对

算法:

树先序遍历(递归+非递归) or 最大子数组和

反问:

  • 部门技术栈,解决什么样的问题,达到什么效果
  • 新人培养机制
  • 面试印象与建议

第二天上午约二面 在12/14

二面 大概 1h

上一面主要拷打第一个项目,二面主要问第二个项目,让我说的时间很多,回忆起来问的问题不多

  • 对spring认知(详细说了ioc、aop 思想与实现

  • spring都要了哪些设计模式(说了很多,主要模板、观察者、代理、工厂、适配器...提了几个设计原则,举例介绍这些在spring是怎么用的

  • spring都用到哪些集合,为什么(ConcurrentHashMap、ArrayList 使用的地方以及原因

  • 你在开发中怎么选择用哪个集合(介绍各集合特点 使用场景

  • HashMap、HashSet怎么去重(从对象的hashcode、equals方法说起,原实现与为什么一起重写,到put方法计算入参key哈希和判重的过程

手写线程安全的多线程并发卖票,我用了线程池和重入锁,后面去问了我写的去掉锁会不会超卖、会不会出现余票,超卖我答的不对,面试官让我看代码逻辑,但我还是没说到点。问了多机下还并发安全吗 不那该怎么做

反问:

  • 面试印象与建议

  • 只是部署过hadoop伪分布式,对部门技术栈一些东西不熟,入职到做产出之间过程

一些日记性的文字

从大二开始到现在一直在焦虑,半夜刷牛客脉担心得睡不着是常态,多次提醒自己要少想多做。大二学校事务很多,我技术栈推进很慢而且遗忘严重。大二下暑假没投实习,反而去bw大爽特爽了暑假一半。个人计划一推再推:计划大二下暑假投递 -> 计划国庆投递 -> 计划12月入职 ->计划12月开始投递...

投了两周,大中小厂都有,bs回复率10%。想先从小厂练手但还是起步哔哩和华为了,莫名觉得投它们会心安。第二周周一中午接到哔哩约面(约在第二天,很突然。另外周一也有了其他中小厂笔试和约面),激动和紧张得吃不下饭(也可能是咽炎)。但担心更多,认为零经验的我必然会给哔哩送人头,不敢幻想成功后的情形,也不愿上来先寄在一个想去的公司。不让自己抱期待,但我也尽可能地去拼全力了,上海哔哩我是极度想入职的。一面前一天通宵准备面试,复习,因为我做的准备很不充足,八股没系统的过,算法上次集中刷还是在半年前,项目内容也没复习好。通宵一晚第二天通出低烧了,找了药吃了一片到晚上恢复差不多,我是超人。一面结束后让自己不抱希望。显然,面试官比较宽容。二面不去通宵准备了,太危险,正常复习。哔哩效率很高,二面结束后不到十分钟hr通知offer。


速补近期的ll live、、

图文无关,第一次去上海的回忆很美好,同时满足高楼迷与拉拉人的愿望。


#面经##实习#
全部评论
哪个岗位呀,boss上的吗?
5 回复 分享
发布于 2023-12-14 22:11 四川
请问你是用了12306这个项目吗,最近想用这个项目,但都说烂大街了
1 回复 分享
发布于 2023-12-28 19:15 陕西
好熟悉的魔都,你的图给我灵感,决定元旦回去了
1 回复 分享
发布于 2023-12-27 22:57 北京
lovelive
1 回复 分享
发布于 2023-12-27 13:16 陕西
java岗位么
1 回复 分享
发布于 2023-12-24 01:01 上海
佬是boss上投的吗,我官网一个月了还在初筛
1 回复 分享
发布于 2023-12-16 18:52 湖北
实习工资多少啊
点赞 回复 分享
发布于 2024-02-03 20:26 上海
好强啊,佬
点赞 回复 分享
发布于 2024-01-03 23:17 广东
佬,好棒!
点赞 回复 分享
发布于 2024-01-01 00:52 江苏
恭喜
点赞 回复 分享
发布于 2023-12-27 13:16 陕西
拉拉人是什么意思
点赞 回复 分享
发布于 2023-12-24 09:20 上海
请问一下 你大概有多少比例没答出来啊 一般答出多少会给通过啊
点赞 回复 分享
发布于 2023-12-23 20:15 上海
学校有课是怎么走的
点赞 回复 分享
发布于 2023-12-23 13:46 云南
恭喜牛友!像佬看齐
点赞 回复 分享
发布于 2023-12-22 22:25 广东
黑马点评 + 廖雪峰spring
点赞 回复 分享
发布于 2023-12-17 11:45 澳大利亚
恭喜
点赞 回复 分享
发布于 2023-12-15 15:34 四川
问的都答出来了嘛
点赞 回复 分享
发布于 2023-12-15 13:17 北京
恭喜,第二个项目是spring轮子吗
点赞 回复 分享
发布于 2023-12-15 10:02 广东

相关推荐

随着ai ide工具的迅猛发展和在前端开发中的运用,网络上出现了很多吹捧ai技术的言论或者ai取代前端的论断。然而作为一个经验有限的小白,我的感受却和某些大佬们几乎截然不同,总觉得ai还是不够强,不够聪明,接下来聊一聊我的看法供参考,仅代表本人观点。实习和学习期间,cursor,Claude code,trae这些ide我都用过,我大体的结论是:对于常规业务需求,ai ide工具必须在以下几点条件下才能有较为良好的表现,但是对于企业级项目而言,前端开发本质上是企业的商业目标在技术上的实现,和任何一项工程实践一样,都面临着极其复杂的上下文环境,以及多主体的沟通协作,因此以下的要求都很难完全满足。第一,简单明确并且一次性的业务需求。显而易见,需求的复杂度在很大程度上决定了工程的复杂度,以及指令描述的清晰程度。就拿企业里面常见的支付下单链路来说,涉及十几种订单状态和流转步骤,理解业务的过程必须由开发者完成,ai仅仅是辅助。至于迭代次数大家懂得都懂,企业级项目迭代频率是非常快的。第二,低交互,短链路的界面和低性能的要求。c端业务对性能要求通常较高,即使是b端业务也会有较为复杂的交互链路。而这一点是前端开发特有的难度,毕竟前端构建的是UI界面,如果交互效果复杂(UI方面比如阴影渐变,淡入淡出,交互方面比如拖拽展开折叠等),则会非常难以用文字进行描述,对ai来讲也非常不友好。第三,有限的工作区边界和上下文规模这点前端相比后端更容易做到。后端开发常常涉及接口,数据库,中间件,路由等各种模块之间的复杂调用关系,而前端相对来讲更容易把UI组件拆的很细,进而约束工作区和上下文规模。但这项工作涉及组件拆分和数据管理和接口设计,也需要由前端开发者完成,而非完全交由ai工具。第四,命令式的指令和明确的技术规范所谓的命令式,指的是需要把开发步骤详细拆分,而非仅仅声明式地描述结果。举个例子,你不能只说“在这个组件实现登录和注册功能,”,那样的话写出的代码质量很低。你应该和他说 先实现静态约面,再添加交互,校验输入,最后提交结果,并且附上把每一步的效果。此外,请求库用哪个 请求函数是否封装 样式方案用哪个 需不需要拆分文件 开发中有哪些格式规范 函数变量命名怎么样 这些都是需要开发者去约定的。接下来举几个日常前端开发中的情景,这也是我为什么会得到以上的结论和感受。1.你刚进公司开发第一项需求,项目需要同时在web端和移动端运行,请问你如何解决手机端调试(让手机打开localhost),开发阶段跨域和登录状态共享(拿到其他域名的登录态)的问题?ai可能会给你一些常规的方法,什么webpack vite的proxy代理解决跨域,然后局域网监听,内网穿透让手机访问网址,修改host可以共享cookie等等,这些我也都不太懂。但其实公司里面大概率早已有成熟的解决方案,只需要访问一个共享的中间网站,让手机扫个码就能一站式解决所有问题,连proxy都不用配。所以你要做的是熟悉文档,判断问题和沟通提问的能力,以及一些超越前端范畴的网络知识。这些都是ai无法替你获取的信息。毕竟对ai来说,所有的问题都是你的问题,但对你来说并不是哈哈哈。2.假设你正在开发一个商品展示的详情页,现在拿到的是设计稿和prd,懒得一点点敲样式,打算把它甩给ai,直接告诉他在中让他直接生成静态代码。但很快你会碰到很多问题。首先是你要清楚你们项目样式方案要用哪一个,moduleCSS,CSS in JS还是原子化CSS,不说的话ai可能就直接把style塞到标签里了。其次是一些响应式问题,页面宽度不够时布局需不需要换一种展示方式,文字溢出怎么展示?页面宽度拉长的时候圆角比例不对了可以接受吗?页面上的icon怎么都不一样能不能统一复用?这些都需要和设计师一点点沟通甚至battle。第三是交互逻辑,用户体验以及一致的UI界面。滚动到底部有没有loading状态?滚动事件要不要节流函数?函数自己写还是用第三方库?用哪个版本?移动端支持度怎么样?商品的数据量有多少,需不需要虚拟列表?没数据的时候页面展示什么?高度是不是固定?此外,弹窗和loading 按钮是不是已经有通用的组件了,没有的话需不需要封装?需要封装到什么程度?需不需要发布npm包?这些都是由你和团队决定的,而不是完全交给ai,否则它可能用一大堆代码还原了一个你引入几行代码就能搞定的东西。AI不是不考虑这些问题,而是不符合你的预期,增加后续维护成本。有可能ai给你用antd写了一堆,但是明明你们部门之前有自己二次封装antd,也有可能它引入的包和你项目的某个框架不兼容。这要求你对部门技术有基本的了解甚至熟悉。3.进入联调阶段,你开始换账号测试,突然发现换到某一个账号后下单按钮疯狂点击没反应,开始排查。原因是这个用户在这个协议里受到了某些限制不能下单,后端数据库里拿不到数据,返回操作失败,前端也无法跳转下一步。理论上,登录之后如果他受到协议限制没权限,按钮应该隐藏,提示用户没权限。问题出现的原因,大家都应该背锅:产品: prd里面没写,逻辑和之前一样,因为默认大家都懂。没权限按钮肯定点不了啊设计: 照着prd画的,总不可能有按钮没按钮都画一遍前端: 你当时梳理业务的时候是给ai梳理的,ai打死也不知道你这按钮还会隐藏的,所以你没问产品,也没找后端加字段。后端: 只看prd,prd没写就没做。开发阶段前端也没说要加字段,就没加。现在你提出了解决方法,让后端加上一个字段hasRight,前端判断是否有权限,没有的话按钮隐藏掉。但是后端看了一下项目,发现这个字段的判断逻辑在另一个旧项目里面,所以让你去调用旧的接口拿字段。你求着后端说能不能聚合一下,后端说太麻烦不好做,而且不要重复开发,最好前端发个请求去拿就行了,所以为了一个新的字段前端要去另一个页面找请求是怎么发的。前端很委屈,但是也很无奈。新项目的页面用到老项目的接口,于是你打开线上页面,打开控制台翻请求看看参数怎么传的,发现那些参数完全没见过都根本看不懂啥意思。复制给ai它能帮你吗?恐怕不太行吧。无奈之下,你又只能去找这个项目的前端代码,在套了一层又一层的屎山里面翻来覆去,总算找到了那些请求参数的依赖逻辑,万幸的是这些参数都通过在新项目的现有数据推导计算出来,有些只是换了个名字。不过很快你又发现新的问题,这个老项目部署在a.com域名上,但是你现在开发的新项目部署在b.com上,即使你参数都准备好了,也会因为跨域拿不到数据。难道说还要在本地配置代理吗?甚至可能还要开发一个node中间层作为转发?开发阶段好说,测试和生产又怎么办?难道因为一个字段导致项目架构都要变动吗?要不还是找后端协调一下?怎么办呢? ai能帮你吗?你要是问题说不清楚,它真有可能给你本地整一个node转发层出来。。。4.提测阶段,第一天测试就拿了bug截图甩你脸上。你发现页面按钮全部挤一起,怎么回事呢?调试了半天才发现原来你习以为常的flex布局gap属性在某些安卓旧式机上不兼容。所以只能把项目里面手动把gap一个个换成margin–right和margin bottom。。。你好奇ai为什么没和你说?ai能知道就怪了。。。而且鬼知道你用什么机子测。测试的最后一天,产品突然说要加个埋点,问就是老板要,于是你只能拉回代码加埋点,本来想问ai,但是ai怎么可能知道你们部门埋点工具的逻辑呢?于是你只能去翻文档一点一点对照着写。最后看着卡着一动不动的cicd流水线感慨,为什么ai不能再聪明一点呢。以上场景都是我的亲身经历,实习几个月代码和技术没学多少,反倒是看到了不少甩锅和妥协。看到这你可能会理解,为什么我认为即使ai工具在我们日常开发中完成了大部分编码工作,它对我们的帮助程度仍然有限,大概占所有工作的30%-40%左右。我这还是个初级的实习生,对于更高级的程序员,这个比例只会大幅度降低。从最开始的业务理解,需求分析,到前期的架构设计,技术选型,旧项目的技术债务梳理,迭代成本评估,到具体的代码实现,安全性测试,bug调试,再到最后的生产上线,性能调优,前端开发涉及到产品需求提出到落地到后续迭代的全链路,在这中间很多事情是需要我们人去一点一点理解和实现的。很多时候我们面临的不仅仅是工作区的窗口那几个文件和几行代码,甚至都不是单纯的技术问题,是一个带有历史包袱和庞大上下文的复杂系统。所以我们要做的是打好地基,搭好框架,尽最大的可能缩减需求边界,明确限制条件,这样ai才能成为你得力的执行者,做好最后的搬砖工作,而不是一上来就让ai建造一整座房子。
AI Coding的使用...
点赞 评论 收藏
分享
评论
58
226
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务