逆天字节一面面经

1h

感觉对方不像大陆人

1.介绍实习时做的难点(锐评:你这难点不难啊)

2.介绍下项目

3.redis的常用数据类型

4.redis的hash的底层原理

5.redis的hashtable扩容过程是怎么样的?

6.扩容的时候有新的读写请求怎么办?(我说了第一种空间换时间,被锐评:你这个方法是我能想到的所有方法里最差的;后面我又想了个方法)

7.HashMap怎么扩容的?

8.HashMap扩容有刚刚说的问题吗

9.HashMap和ConcurrenHashMap的区别?

10.Mysql表有5000w条数据怎么办?答分表

11.怎么分表?(为什么不用id分表

算法题:逆天的来了

我记得再牛客别人的面经里见过这个题,很难很难,但我没印象怎么做,用时20分钟

花10分钟把代码写完了,1分钟给面试官讲思路,自夸这思路挺有创意的,面试官说让他再想想,一想想了9分钟,最后说感觉我写的有点问题,但是不能找到问题在哪里,思路确实挺有创意的,笑死

#字节##字节求职进展汇总##软件开发投递记录##软件开发笔面经##牛客创作赏金赛#
全部评论
给他拽上天了
8 回复 分享
发布于 09-20 17:06 天津
字节面试官咋都这么狂😂
8 回复 分享
发布于 09-20 19:43 上海
我当时面试官直接穿个背心,说话长相都像个gay😂
4 回复 分享
发布于 09-21 16:12 江苏
所以算法题是啥?
3 回复 分享
发布于 09-20 17:24 湖北
工科面试相同经历😅上来锐评你这做的项目不怎么样啊,问到细节面试官就暴露出专业知识也不行。上来五人面试不开摄像头审囚犯一样,通篇透露想用最少的薪资招到最核心的人才😅shabi东西真能完全满足你们要求的人会去你那厂,搞笑呢
3 回复 分享
发布于 09-21 11:08 湖南
redis不是用渐进式hash的吗,本来就是空间换时间吧?
1 回复 分享
发布于 09-21 20:31 广东
逆天😅
点赞 回复 分享
发布于 09-21 10:50 陕西
字节两轮,遇到两个用鼻孔看人的逆天。😅
点赞 回复 分享
发布于 10-08 12:13 河南
我们这正在大力招聘,base深圳或上海,有兴趣可以联系我,多一个offer就多一个选择😁
点赞 回复 分享
发布于 10-11 13:07 湖北

相关推荐

以下是其中一些常见的工具和技术:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&uuid=9d41438f19104dca802ef21b5942c139混淆和压缩代码:通过工具如UglifyJS、Terser等来压缩JavaScript代码,删除不必要的空格、换行符和注释,并将变量名、函数名等重命名为更短的形式,以减少文件大小和提高加载速度。图片优化:使用工具如OptiPNG、JPEGoptim、SVGO等来优化图片,减小文件大小而不影响视觉质量。另外,使用适当的格式来存储图片,如使用WebP替代JPEG和PNG,以进一步减小文件大小和提高加载速度。懒加载:将页面上的非关键资源(如图片、视频、音频等)延迟加载,等到用户真正需要时再加载,以减少初始页面加载时间。缓存和版本控制:通过使用HTTP缓存来减少对服务器的请求,浏览器可以缓存静态文件(如样式表、脚本文件和图片),从而减少页面加载时间。此外,使用版本控制技术(如添加哈希值到文件名)来确保浏览器能够正确地加载最新的文件而不使用缓存。Tree Shaking:通过打包工具(如Webpack和Rollup)的Tree Shaking功能,可以自动删除未使用的代码,减小文件体积。资源合并和打包:将多个文件合并为一个单独的文件,减少网络请求次数和文件大小,同时使用打包工具(如webpack)将多个模块打包为一个或多个bundle,以减少页面加载时间。异步加载和代码分割:将代码按需加载,仅在需要时动态加载,提高页面加载速度。使用工具如Webpack的代码分割功能或动态导入(Dynamic Import),以将代码拆分成较小的块,并在需要时按需加载。响应式图片:根据设备的屏幕大小和分辨率,使用不同大小的图片,以减少不必要的下载和带宽消耗。
点赞 评论 收藏
分享
        这一期把京东二面剩下的问题复盘一下,主要是针对构建项目中的各文件的作用。考察的点很细很细,工程化根本不需要问多复杂的原理,问这些答不上来就能知道你水平如何了,我答得特别烂,但是学习了很多东西。1.package.json文件中的script部分是干嘛的,scrpit中有个dev指令,后面配置了vite,这个vite哪里来的,如何运行起来的?        这个问题想回答好首先要知道package.json文件是干嘛的,里面的scrpit应该大部分同学都知道,但是vite从哪里来可能是大部分人没想过的问题。        关于package.json:在每个前端项目中,都有 package.json 文件,它是项目的配置文件,常见的配置有配置项目启动、打包命令,声明依赖包等。当我们克隆一个新的项目到本地时,需要执行 npm install(yarn install)命令来安装项目所需的依赖文件。当执行该命令时,就会根据 package.json 文件中的配置信息来自动下载所需的模块,也就是配置项目所需的运行和开发环境。package.json 中最重要的两个字段就是 name 和 version,它们都是必须的,如果没有,就无法正常执行 npm install 命令。npm 规定 package.json 文件是由名称和版本号作为唯一标识符的。        scrpits部分就是配置了我们常用的开发、打包等指令的,如我们常见的npm run dev和npm run build为什么能够运行或打包项目就是在这里进行了配置        那么vite是如何被找到的?我当时的第一反应是下面配置的devDependencies中有vite,这当然有关系,但是这只是配置了vite作为开发过程中的依赖,而真正能够让他被使用的包则是在node_modules中。我的理解是,当我们安装或者新建一个项目时,开发所用的devDependencies将vite作为我们开发时的依赖,通过这个配置让我们的程序关联上node——modules中的vite工具,再通过scripts中的指令调用。2.devdependencies和dependencies的区别,如果这两块的东西都写到devdependencies或dependencies里面有什么区别?        通过名字大部分同学都知道devDependencies配置的是开发环境所用的依赖,dependencies配置的是生产环境中的依赖。        他俩的详细作用如下:        dependencies 字段中声明的是项目的生产环境中所必须的依赖包。devDependencies 中声明的是开发阶段需要的依赖包,如 Webpack、Eslint、Babel 等,用于辅助开发。它们不同于 dependencies,因为它们只需安装在开发设备上,而无需在生产环境中运行代码。当打包上线时并不需要这些包,所以可以把这些依赖添加到 devDependencies 中,这些依赖依然会在本地指定 npm install 时被安装和管理,但是不会被安装到生产环境中。        那么如果这两块的东西都写到devdependencies或dependencies里面会影响什么?如果你的项目会被发为npm包被使用,那么devdependencies,dependencies必须分开写;如果并不发布,那么声明在dependencies 和 devDependencies 中的依赖没有大的区别。        如果安装一个npm包,那么这个包的dependencies意思是在运行时还需要依赖什么其他的包才能满足你的运行要求。安装的时候会安装这个包的dependencies,并且是向上递归的(可以看图2网友的解释)。3.编译完的dist和node_modules有啥关系吗,部署的是dist,node_modules会部署吗?        在构建项目的过程中(将源代码转换为 dist 中的可分发文件时),构建工具可能会读取 node_modules 中的包。例如,在使用 Webpack 构建一个包含 React 应用的项目时,Webpack 会从 node_modules 中找到 react 和 react - dom 等相关包,然后根据项目的配置将这些包中的必要代码与项目的源代码一起进行处理,最终生成的优化后的文件存放到 dist 中。        在开发过程中,开发者会在 node_modules 中安装各种开发依赖和生产依赖。当项目准备部署时,构建过程会将这些依赖的相关部分(根据代码的引用情况)正确地整合到 dist 中的文件里,从而确保项目在生产环境中能够正常运行,生产环境中不需要直接访问 node_modules 文件夹。        项目最终在 dist 中的可分发文件可能依赖于 node_modules 中的包所提供的功能。比如一个基于 Vue.js 构建的项目,node_modules 中的 vue 包提供了 Vue 框架的核心功能,构建工具会将这些功能整合到 dist 中的 JavaScript 文件里,使得浏览器在加载 dist 中的文件时能够正常运行 Vue 应用。4.pnpm-lock是什么        pnpm-lock.yaml 是 pnpm 包管理器生成的锁定文件。它类似于 npm 的 package-lock.json 或 yarn 的 yarn.lock 文件,用于记录项目的依赖关系和确保在不同环境中安装相同的包版本。        当你使用 pnpm 安装依赖时,它会自动生成 pnpm-lock.yaml 文件。这个文件包含了项目的依赖关系树,以及每个包的版本信息和依赖项的精确版本范围。这样,当你在不同的环境中重新安装依赖时,pnpm 会根据 pnpm-lock.yaml 文件来确保安装相同的包版本,以保持项目的一致性。该系列往期链接:第一期:https://www.nowcoder.com/feed/main/detail/a79cb52ce00c4f6d874683e65b8eb718?sourceSSR=users第二期:https://www.nowcoder.com/feed/main/detail/04aee48cc23f4b09a04d0dba327f0c5d?sourceSSR=users第三期:https://www.nowcoder.com/feed/main/detail/0195906f12dd4fc0826251e9ceee19ab?sourceSSR=users第四期:https://www.nowcoder.com/feed/main/detail/2c0a525fa04240778e6c43d7d355a7ca?sourceSSR=users第五期:https://www.nowcoder.com/discuss/673869939018588160?sourceSSR=users京东二面面经:https://www.nowcoder.com/feed/main/detail/18cb2c4275544c79af169aa92d2c3fd1?sourceSSR=users#牛客在线求职答疑中心##我的求职思考##京东##软件开发2024笔面经##前端#
点赞 评论 收藏
分享
7 35 评论
分享
牛客网
牛客企业服务