前言: 在七月份面试了整整四个星期拿到了满意的实习offer, 于是发篇博客记录一下 (主要包括内容是: 上一段实习 + 面经 + 感想) 第一段实习经历第一段实习是在明汯投资管理里面做实习生, 因为是第一段实习所以还是格外的珍惜, mentor对我很好, 总会请我喝咖啡, 吃饭和聊天, 遇到的人都是很好的人, 而且也不执行打卡制度,下午六点钟大伙就都走的差不多了,唯一的缺点是公司规模很小, 也不是互联网公司, 开发流程很草台班子, 开发人员也很少(? ) 收获沟通能力可能增加了一点(? ) 也变得更加自信了(确信), 也在mt的建议下多去找人交流沟通, 锻炼自己的表述能力, 多去表达一下自己, 能够锐利一点可以抓住事情的重点. 这些都是我欠缺的部分, 也在一直慢慢的改善!!! 七月的全部面试 快手(电商 - 杭州): 一面秒挂 滴滴(北京日常实习): 一面挂, 另外投了暑期实习国际化的岗位, 两轮技术面一轮总leader面, 最后offer 炎魂网络(杭州): 线下一面, offer 字节跳动国际电商(珠海): 一面二面过, 三面挂 字节跳动AILab(上海): 两轮技术面一 ...
网络库的封装和实现背景 背景: 虽然在前端领域有很多成熟的请求库, 但是在实际的开发过程中, 很难符合契合实际的开发需求 比如经典的库: axios 并不具备以下功能 请求重试 请求缓存 请求幂等 请求串行 请求并发 … SWR / VueRequest 虽然提供的三方功能很多, 仍然存在 与上层框架过度绑定导致开发场景受限, 无法提供统一的 API 成熟度不很完全(?) 不能自己随时开口子改设计 没有聚合基础的请求库, 依然需要手动整合 公共库并不包含内部制定的协议规范, 即便使用公共库,也需要进行二次封装 需要自行封装一套适配公司业务的前端请求库 方案和设计库结构的宏观设计 整个库结构包含三层, 从下往上依次是: 请求实现层: 提供请求基本功能 request-core: 提供网络上层控制, 比如请求串行, 请求并行, 请求重试, 请求防重等功能 request-bus: 为请求绑定业务功能, 该层是接入公司内部协议规范和接口文档, 向外提供业务接口 API 层是对代码逻辑的划分,具体实现有很多种 每一层是一个包, 可以使用多包管理(momorepo) ...
基本语法HelloWorld简单示例1234package mainfunc main(){ fmt.Println("Hello World!")} 终端运行 12$ go run helloworld.goHello World go run表示直接运行 直接编译 go 语言并执行应用程序,一步完成 也可以先 go build helloworld.go || ./helloworld.go build成静态语言然后在执行 go 语言的语言, 写出规范的一致代码是很重要的 比如写函数的时候’{‘ 必须和函数名在同一行 建议使用 go 的默认格式化程序来约束 上面的执行流程是 package main: 定义了包名 必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main 表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包 import “fmt”: 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入 ...
TypeScript 简介TypeScript 作为 Javascript 语言的超集、为 JavaScript 添加可选择的类型标注,大大的增加了代码的可维护性和迭代性。同时会不断的发展 javascript 的新特性,是现在流行的前端技术 TypeScript 的特点 始于 JavaScript,归于 JavaScriptTypeScript 终归是通过编译形成 Javascript 可以运行在任何浏览器上和 nodejs 等运行时环境中 强大的工具构建大型应用程序 类型允许 JavaScript 开发者在开发 JavaScript 应用程序时使用高效的开发工具和常用操作比如静态检查和代码重构。 类型是可选的,类型推断让一些类型的注释使你的代码的静态验证有很大的不同。类型让你定义软件组件之间的接口和洞察现有 JavaScript 库的行为。 先进的 JavaScript TypeScript 提供最新的和不断发展的 JavaScript 特性,包括那些来自 2015 年的 ECMAScript 和未来的提案中的特性,比如异步功能和 Decorators,以帮助建立健壮的组件。 ...
应用题lodash 中的 get 函数123456789101112131415161718192021function _get( origin: Record<string, any>, path: string | string[], defualtValue: any = 'explosion') { // judge if (typeof path === 'string') { // match const reg = /[^\[\].]+/g path = path.match(reg) as string[] } let result = origin for (const key of path) { if (result && typeof result === 'object' && key in result) { result = result[key] ...
工程化配置momorepo 简介由于我们React库中有React-dom库,React-native库等等等,为了管理这些工程文件库可以使用momorepo来进行版本控制和管理 momorepo: 一种项目库的管理方式 可以很方便的协同管理不同独立的库的生命周期 一些简单的工具:npm-workspace、Yarn-workspace、pnpm-workspace 专业工具:nx、bit、turborepo、rush、lerna 包管理器选择 pnpm 作为我们项目的包管理器 安装依赖更快 解决了 npm 的一些疑难问题 pnpm 初始化 12npm install -g pnpmpnpm init pnpm 实验 momorepo:建立 pnpm-workspace.yaml文件去书写配置 1234567packages: # all packages in direct subdirs of packages/ - 'packages/*' # all packages in subdirs of components/ - 'co ...
new 操作符JavaScript中的 new 操作符是对一个构造函数创建实例的过程 如 12345function Person(name) { this.name = name}const yueyun = new Person('yueyun')console.log(yueyun) new 通过构造器创建的实例能访问构造函数中的属性 可以访问到构造属性原型链的属性 123456789function myNew (Func,...args) { // 创建一个新的对象 const obj = {} // 新对象的原型指向原型链 obj.__proto__ = Func.prototype // 绑定this const result = Func.apply(obj,..args) return result instanceof Object ? result : obj} 为什么要使用虚拟 DOM 虚拟 DOM 的性能一定比真实 DOM 差吗?虚拟 DO ...
Vue 认识渐进式的 JS 框架,关注视图层,数据驱动初始 vue 123456789101112<script src="./js/vue.js"></script><div id="root"> <h1>helloworld,{{name}}</h1></div><script> new Vue({ el: '#root', data: { name: 'vue' } })</script> 最后会在浏览器上打印 helloworld,vue 1.想让 vue 工作,就必须创建一个 vue 实例,且要传入一个配置对象2.root 里的容器依然符合 html 代码的规范,新加入了一些特殊的 vue 语法3.root 容器里面的代码称之为[vue 模板] (templete)4.Vue 实例和容器是 ...
React 脚手架搭建Create-react-app 基础操作当下前端开发的主流是组件化和模块化 有助于团队协作开发 便于组件的复用:提高开发效率、方便后期维护、减少冗余代码 划分组件: 业务组件:针对项目需求封装 普通业务组件:复用性低,只是单独拆选出来的一个模块 通用业务组件:具备复用性 功能组件:适用于多个项目「例如:UI 组件库中的组件」 通用功能组件 组件化开发必然会带来工程化,即基于 Webpack / Vite / Rollup / Turbopack 等工具实现组件的合并、压缩、打包等。 安装 create-react-app我们可以基于 webpack 自己去搭建一套工程化打包的脚手架,但是过程会非常麻烦和繁琐,因此可以利用官方提供的脚手架create-react-app创建 React 项目,基于该脚手架创建项目,默认就把 Webpack 的打包规则已经处理好了,把一些项目需要的基本文件也都创建好了。我们可以在其上面做修改 全局安装 create-react-app 脚手架: 1npm i create-react-ap ...