历时46天,0实习选手从0开发基础到三个大厂后台暑期offer

时间线:

2.23上午 根据投票结果下定0基础决心转JAVA开发

2.23 中午 购买白袜哥项目,收到白袜哥私聊,于是加微信开学(这个时候腾讯提前批都快结束了,但我还是一点基础都没有,看着金三马上就要到来,焦虑得每天睡不好觉,白袜哥私聊我就直接死马当活马医了)

2.23~3.9 白袜哥八股+牛客网面经+第一遍HOT100(期间被腾讯提前批捞了几次,但都是客户端开发,而且准备不足,最远一次就走到二面,好像连挂了四五次)

3.9~3.19 看白袜哥项目源码和话术+0.6个第二遍HOT100(是的,到最后我都没刷完第二遍HOT100)

3.19~3.20 连投26家中大厂,纯填各种官网的简历信息整整填了两天

3.21~3.23 连笔7场还是8场,耐笔王(真没想到这群大厂基本笔试时间都能错开)

3.25~3.28 美团、快手、字节、腾讯音乐、腾讯云智、阿里控股等一堆面试,4天面8场,耐面王,但基本全军覆没,除了腾讯没有活到二面的,基本都是泡一周自动回库(这个时间点差不多是最难熬的,但还好比较大心脏,顶住了压力)

3.29~3.30 继续笔试上周末时间冲突延期的

3.29~4.3 淘天一面秒挂,拼多多一面,腾讯二面、隔天HR面、仨小时后云证(到这个时候之前的焦虑一扫而空,加上面试经验积累,整个人的状态都好了很多),拼多多二面,阿里云一面

4.4~4.6 因为腾讯基本有了,因此所有笔试全拒,玩鸣潮嗨皮了三天

4.7 字节复活赛一面,美团复活赛一面

4.8 字节复活赛二面,拼多多主管面,字节复活赛HR面(原本以为主管面那个状态就是口头oc了,所以本文一开始标题是三个offer,但评论区提醒原来是多多特有的超大池子,遂更正,5.12更新,已正式offer)

4.9 字节正式offer(最速传说,从0到oc只用了三天)

4.10更新 腾讯正式offer(还是晚了一步啊藤子,少泡两天我真接你的了,秋招再见吧

5.12更新 pdd正式offer(我字节都干了一个月了pdd才来,真有你的啊多多)

最后直接接了字节的offer,因为我个人希望未来在京津冀这片就业,拼多多和腾讯虽然也很好,但还是离家太远了,未来秋招找国央企的话在北京面试也比较方便,况且这俩虽然通过的早,但都还搁那泡着呢,腾讯都云证泡了一周多了,后面的阿里云和美团也不准备接着面了

至此暑期寻找之旅结束,可喜可贺

下面是感想:

是真的没想到整个找暑期的过程能如此顺利,毕竟不管是算法、八股还是项目都是清一色的赶鸭子上架,没有技巧、全靠硬背,之前只在组内用python写过一些机器学习。一开始想着能找到一个就烧高香了, 没想到到现在还有挑选的余地,白袜哥的项目以及相关指导是至关重要的。可以说二十多场面试下来白袜哥的那个仿B站项目就是绝对的核心,靠着那个项目取得了现在的成果。

最后分享一下二十多场面试总结下来的经验,回馈一下牛油们:

1. 一个不烂大街的项目真的很重要,不烂大街的项目是 0实习的情况下让你能够脱颖而出的唯一资本,不管这个岗是什么业务、用什么语言,一定会问,也因此也再次感谢白袜哥

2. 不用JAVA的组的面试一般是计算机系统、计算机网络+深挖项目;用JAVA的组一般是JAVA八股+项目

3. 算法做不出来就是几乎百分百的一票否决,哪个厂都一样

4. 说话要自信,哪怕不确定也要很肯定的说出来,实在说不出来就说不会,一直卡在某个问题上思索最后还没憋出来才是最减分的

#实习##面试##牛客创作赏金赛#
全部评论
一看就是引流的,不包真
35 回复 分享
发布于 04-10 14:50 河北
是我在做梦还是你在做梦
16 回复 分享
发布于 04-13 12:16 广东
慢了,我0基础两天半就成了
9 回复 分享
发布于 04-11 17:53 广东
羡慕,腾讯和字节都是两面技术面,我这边都是三面挂
6 回复 分享
发布于 04-10 09:37 北京
这是真的吗,真能一个月速成?
2 回复 分享
发布于 04-10 09:53 湖北
有评论说是引流的,我给下证据
1 回复 分享
发布于 04-10 15:00 湖南
mark一下时间线
1 回复 分享
发布于 04-10 12:06 河南
接好运
点赞 回复 分享
发布于 04-26 00:22 广东
学长太强了有啥经验可以分享吗
点赞 回复 分享
发布于 04-25 22:52 北京
不是都学这么快吗 这不就显得我每个章节学过来的很***吗
点赞 回复 分享
发布于 04-25 22:47 北京
白袜哥是谁
点赞 回复 分享
发布于 04-15 17:46 福建
白袜哥项目真香
点赞 回复 分享
发布于 04-13 15:21 广东
也太厉害了吧,你的算法基础应该不错吧
点赞 回复 分享
发布于 04-11 23:53 山东
拼多多口头offer是指?
点赞 回复 分享
发布于 04-10 17:50 四川
真的假的?
点赞 回复 分享
发布于 04-10 15:07 山东
接offer
点赞 回复 分享
发布于 04-10 11:24 广东
接offer
点赞 回复 分享
发布于 04-10 11:04 天津
@黑皮白袜臭脚体育生 再次感谢
点赞 回复 分享
发布于 04-10 10:50 北京
接offer
点赞 回复 分享
发布于 04-10 09:52 北京
接offer
点赞 回复 分享
发布于 04-10 09:23 湖南

相关推荐

一、面试基本情况本次面试主要围绕 React 相关技术、流式传输以及算法与 React Hook 实现展开,包含技术原理问答和两道代码实现题。二、技术问题回顾与解答1. React Router 的实现机制React Router 基于 HTML5 的 history API 实现单页面应用的路由功能。它通过监听浏览器的 popstate 事件(当用户点击浏览器的前进、后退按钮时触发)以及手动调用 history.pushState()、history.replaceState() 方法来更新 URL 地址,同时不触发页面刷新。在 React 组件中,通过 BrowserRouter(基于 history API)、HashRouter(基于 URL 的 hash 部分,兼容性更好)等组件包裹应用,结合 Route 组件定义不同路径对应的渲染组件。当 URL 变化时,React Router 会根据当前路径匹配相应的 Route 并重新渲染对应的组件,从而实现页面内容的更新 。不过在本次面试中,我对这块知识掌握不够扎实,未能完整清晰作答。2. React memo 是做了什么React.memo 是一个高阶组件,用于对函数式组件进行性能优化。它会对组件的 props 进行浅比较,如果前后两次传入的 props 浅比较结果相同,就直接复用之前渲染的结果,不再重新执行组件函数,从而避免不必要的重复渲染。但需要注意,它仅对 props 变化进行比较,当组件内部状态(如通过 useState 创建的状态)变化时,即使 props 未变,组件仍会重新渲染。3. React Suspense 怎么实现的React Suspense 用于处理组件的异步加载情况,让开发者可以指定在异步操作(如数据获取、动态导入组件)进行时显示的加载状态。它通过在组件树中标记一个“等待”区域,当子组件中有异步操作未完成时,会先渲染 Suspense 组件指定的 fallback 内容(如加载动画),直到异步操作完成,再渲染实际的子组件内容。内部实现依赖于 React 的 Fiber 架构,利用 Fiber 的可中断、可恢复特性,在等待异步操作完成期间释放 CPU 资源,不阻塞主线程,提高应用的响应性能 。4. 流式传输相关讨论在讨论流式传输时,我提出可以在前端利用 Server-Sent Events(SSE)实现。SSE 是一种单向的、由服务器向客户端推送数据的技术,适合用于实时数据传输场景。同时,对于 JSON 数据的处理,采用流式解析会更加高效,比如在处理阶乘等数据量较大且逐步生成的场景下,流式解析无需一次性将所有数据加载到内存中,而是边接收数据边解析处理,减少内存占用,提升数据处理效率。三、代码题实现1. 大数相减(考虑负数结果)function subtractLargeNumbers(num1, num2) {    function compare(num1, num2) {        if (num1.length > num2.length) return 1;        if (num1.length < num2.length) return -1;        for (let i = 0; i < num1.length; i++) {            if (num1[i] > num2[i]) return 1;            if (num1[i] < num2[i]) return -1;        }        return 0;    }    const sign = compare(num1.split(''), num2.split(''));    let larger = sign >= 0? num1 : num2;    let smaller = sign >= 0? num2 : num1;    let result = '';    let carry = 0;    for (let i = 0; i < larger.length; i++) {        let diff = parseInt(larger[larger.length - 1 - i]) - (parseInt(smaller[smaller.length - 1 - i]) || 0) - carry;        if (diff < 0) {            diff += 10;            carry = 1;        } else {            carry = 0;        }        result = diff + result;    }    while (result[0] === '0' && result.length > 1) {        result = result.slice(1);    }    return sign < 0? '-' + result : result;}2. 实现一个可暂停、继续的倒计时 React Hookimport { useState, useEffect } from'react';function useCountdown(initialTime) {    const [time, setTime] = useState(initialTime);    const [isRunning, setIsRunning] = useState(true);    let intervalId;    useEffect(() => {        if (isRunning && time > 0) {            intervalId = setInterval(() => {                setTime(prevTime => prevTime - 1);            }, 1000);        } else {            clearInterval(intervalId);        }        return () => clearInterval(intervalId);    }, [isRunning, time]);    const start = () => {        setIsRunning(true);    };    const pause = () => {        setIsRunning(false);    };    return {        time,        start,        pause    };
查看6道真题和解析
点赞 评论 收藏
分享
评论
40
48
分享

创作者周榜

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