avatar
文章
297
标签
31
分类
11

首页
文章
标签
娱乐
  • 图库
  • Music
  • Movie
  • 简历
联系我
About
前端日记
搜索
首页
文章
标签
娱乐
  • 图库
  • Music
  • Movie
  • 简历
联系我
About

前端日记

面试官:说说你对策略模式的理解?应用场景?
发表于2023-01-01|面试
面试官:说说你对策略模式的理解?应用场景? 一、是什么策略模式(Strategy Pattern)指的是定义一系列的算法,把它们一个个封装起来,目的就是将算法的使用与算法的实现分离开来 一个基于策略模式的程序至少由两部分组成: 策略类,策略类封装了具体的算法,并负责具体的计算过程 环境类Context,Context 接受客户的请求,随后 把请求委托给某一个策略类 二、使用举个例子,公司的年终奖是根据员工的工资和绩效来考核的,绩效为A的人,年终奖为工资的4倍,绩效为B的人,年终奖为工资的3倍,绩效为C的人,年终奖为工资的2倍 若使用if来实现,代码则如下: 1234567891011121314var calculateBouns = function(salary,level) { if(level === 'A') { return salary * 4; } if(level === 'B') { return salary * 3; ...
面试官:说说对设计模式的理解?常见的设计模式有哪些?
发表于2023-01-01|面试
面试官:说说对设计模式的理解?常见的设计模式有哪些? 一、是什么在软件工程中,设计模式是对软件设计中普遍存在的各种问题所提出的解决方案 设计模式并不直接用来完成代码的编写,而是描述在各种不同情况下,要怎么解决问题的一种方案 设计模式能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力 因此,当我们遇到合适的场景时,我们可能会条件反射一样自然而然想到符合这种场景的设计模式 比如,当系统中某个接口的结构已经无法满足我们现在的业务需求,但又不能改动这个接口,因为可能原来的系统很多功能都依赖于这个接口,改动接口会牵扯到太多文件 因此应对这种场景,我们可以很快地想到可以用适配器模式来解决这个问题 二、有哪些常见的设计模式有: 单例模式 工厂模式 策略模式 代理模式 中介者模式 装饰者模式 …… 单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。实现的方法为先判断实例存在与否,如果存在则直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象 如下图的车,只有一辆,一旦借出去则不能再借给别人: 工厂模式工厂模式通常 ...
面试官:说说你对Git的理解?
发表于2023-01-01|面试
面试官:说说你对Git的理解? 一、是什么git,是一个分布式版本控制软件,最初目的是为更好地管理Linux内核开发而设计 分布式版本控制系统的客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复 项目开始,只有一个原始版仓库,别的机器可以clone这个原始版本库,那么所有clone的机器,它们的版本库其实都是一样的,并没有主次之分 所以在实现团队协作的时候,只要有一台电脑充当服务器的角色,其他每个人都从这个“服务器”仓库clone一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交 github实际就可以充当这个服务器角色,其是一个开源协作社区,提供Git仓库托管服务,既可以让别人参与你的开源项目,也可以参与别人的开源项目 二、工作原理当我们通过git init创建或者git clone一个项目的时候,项目目录会隐藏一个.git子目录,其作用是用来跟踪管理版本库的 Git 中所有数据在存储前都计算校验和,然后以校验和来引用,所以在我们修改或 ...
面试官:说说Git 中 HEAD、工作树和索引之间的区别?
发表于2023-01-01|面试
面试官:说说Git 中 HEAD、工作树和索引之间的区别? 一、HEAD在git中,可以存在很多分支,其本质上是一个指向commit对象的可变指针,而Head是一个特别的指针,是一个指向你正在工作中的本地分支的指针 简单来讲,就是你现在在哪儿,HEAD 就指向哪儿 例如当前我们处于master分支,所以HEAD这个指针指向了master分支指针 然后通过调用git checkout test切换到test分支,那么HEAD则指向test分支,如下图: 但我们在test分支再一次commit信息的时候,HEAD指针仍然指向了test分支指针,而test分支指针已经指向了最新创建的提交,如下图: 这个HEAD存储的位置就在.git/HEAD目录中,查看信息可以看到HEAD指向了另一个文件 12345$ cat .git/HEADref: refs/heads/master$ cat .git/refs/heads/master7406a10efcc169bbab17827aeda189aa20376f7f 这个文件的内容是一串哈希码,而这个哈希码正是master分支上最新的 ...
面试官:说说你对版本管理的理解?常用的版本管理工具有哪些?
发表于2023-01-01|面试
面试官:说说你对版本管理的理解?常用的版本管理工具有哪些? 一、是什么版本控制(Version control),是维护工程蓝图的标准作法,能追踪工程蓝图从诞生一直到定案的过程。此外,版本控制也是一种软件工程技巧,借此能在软件开发的过程中,确保由不同人所编辑的同一程序文件都得到同步 透过文档控制,能记录任何工程项目内各个模块的改动历程,并为每次改动编上序号 一种简单的版本控制形式如下:赋给图的初版一个版本等级“A”。当做了第一次改变后,版本等级改为“B”,以此类推 版本控制能提供项目的设计者,将设计恢复到之前任一状态的选择权 简言之,你的修改只要提到到版本控制系统,基本都可以找回,版本控制系统就像一台时光机器,可以让你回到任何一个时间点 二、有哪些版本控制系统在当今的软件开发中,被认为是理所当然的配备工具之一,根据类别可以分成: 本地版本控制系统 集中式版本控制系统 分布式版本控制系统 本地版本控制系统结构如下图所示: 优点: 简单,很多系统中都有内置 适合管理文本,如系统配置 缺点: 其不支持远程操作,因此并不适合多人版本开发 集中式版本控制系统结构如下图所示: ...
面试官:说说Git常用的命令有哪些?
发表于2023-01-01|面试
面试官:说说Git常用的命令有哪些? 一、前言git 的操作可以通过命令的形式如执行,日常使用就如下图6个命令即可 实际上,如果想要熟练使用,超过60多个命令需要了解,下面则介绍下常见的的git 命令 二、有哪些配置Git 自带一个 git config 的工具来帮助设置控制 Git 外观和行为的配置变量,在我们安装完git之后,第一件事就是设置你的用户名和邮件地址 后续每一个提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改 设置提交代码时的用户信息命令如下: git config [–global] user.name “[name]” git config [–global] user.email “[email address]” 启动一个git项目的初始有两个途径,分别是: git init [project-name]:创建或在当前目录初始化一个git代码库 git clone url:下载一个项目和它的整个代码历史 日常基本操作在日常工作中,代码常用的基本操作如下: git init 初始化仓库,默认为 master 分支 git add . ...
面试官:说说 git 发生冲突的场景?如何解决?
发表于2023-01-01|面试
面试官:说说 git 发生冲突的场景?如何解决? 一、是什么一般情况下,出现分支的场景有如下: 多个分支代码合并到一个分支时 多个分支向同一个远端分支推送 具体情况就是,多个分支修改了同一个文件(任何地方)或者多个分支修改了同一个文件的名称 如果两个分支中分别修改了不同文件中的部分,是不会产生冲突,直接合并即可 应用在命令中,就是push、pull、stash、rebase等命令下都有可能产生冲突情况,从本质上来讲,都是merge和patch(应用补丁)时产生冲突 二、分析在本地主分值master创建一个a.txt文件,文件起始位置写上master commit,如下: 然后提交到仓库: git add a.txt git commit -m ‘master first commit’ 创建一个新的分支featurel1分支,并进行切换,如下: 1git checkout -b featurel1 然后修改a.txt文件首行文字为 featurel commit,然后添加到暂存区,并开始进行提交到仓库: git add a.txt git commit -m ‘fea ...
面试官:说说Git中 fork, clone,branch这三个概念,有什么区别?
发表于2023-01-01|面试
面试官:说说Git中 fork, clone,branch这三个概念,有什么区别? 一、是什么forkfork,英语翻译过来就是叉子,动词形式则是分叉,如下图,从左到右,一条直线变成多条直线 转到git仓库中,fork则可以代表分叉、克隆 出一个(仓库的)新拷贝 包含了原来的仓库(即upstream repository,上游仓库)所有内容,如分支、Tag、提交 如果想将你的修改合并到原项目中时,可以通过的 Pull Request 把你的提交贡献回 原仓库 cloneclone,译为克隆,它的作用是将文件从远程代码仓下载到本地,从而形成一个本地代码仓 执行clone命令后,会在当前目录下创建一个名为xxx的目录,并在这个目录下初始化一个 .git 文件夹,然后从中读取最新版本的文件的拷贝 默认配置下远程 Git 仓库中的每一个文件的每一个版本都将被拉取下来 branchbranch,译为分支,其作用简单而言就是开启另一个分支, 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线 Git 处理分支的方式十分轻量,创建新分支这一操作几乎能在瞬间完成,并且在不 ...
说说对git pull 和 git fetch 的理解?有什么区别?
发表于2023-01-01|面试
说说对git pull 和 git fetch 的理解?有什么区别? 一、是什么先回顾两个命令的定义 git fetch 命令用于从另一个存储库下载对象和引用 git pull 命令用于从另一个存储库或本地分支获取并集成(整合) 再来看一次git的工作流程图,如下所示: 可以看到,git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中 而git pull 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决 在我们本地的git文件中对应也存储了git本地仓库分支的commit ID 和 跟踪的远程分支的commit ID,对应文件如下: .git/refs/head/[本地分支] .git/refs/remotes/[正在跟踪的分支] 使用 git fetch更新代码,本地的库中master的commitID不变 但是与git上面关联的那个orign/master的commit ID ...
面试官:说说你对git rebase 和 git merge的理解?区别?
发表于2023-01-01|面试
面试官:说说你对git rebase 和 git merge的理解?区别? 一、是什么在使用 git 进行版本管理的项目中,当完成一个特性的开发并将其合并到 master 分支时,会有两种方式: git merge git rebase git rebase 与 git merge都有相同的作用,都是将一个分支的提交合并到另一分支上,但是在原理上却不相同 用法上两者也十分的简单: git merge将当前分支合并到指定分支,命令用法如下: 1git merge xxx git rebase将当前分支移植到指定分支或指定commit之上,用法如下: 1git rebase -i <commit> 常见的参数有--continue,用于解决冲突之后,继续执行rebase 1git rebase --continue 二、分析git merge通过git merge将当前分支与xxx分支合并,产生的新的commit对象有两个父节点 如果“指定分支”本身是当前分支的一个直接子节点,则会产生快照合并 举个例子,bugfix分支是从master分支分叉出来的,如 ...
1…111213…30
avatar
YangTao
share & study
文章
297
标签
31
分类
11
Follow Me
公告
=>我的个人网站,分享前端技术及踩坑记录。如果喜欢,欢迎Star!
最新文章
GitHub2025-07-18
为什么前端打包出来的静态文件名字是一串 Hash 值 ?2024-11-28
Vue的不同风格写法,你知道么?2024-10-24
一文解读react-hook(useState、useReducer、useEffect、useCallback、useMemo、useRef、useContext...)2024-09-06
GPT4升级指南(2024年5月最新)2024-05-15
标签
面试JavaScript小程序CSSES6utils正则NodeJSExpressKoatestwindowyamlgithubvuewebpackmetacliajaxReact算法GPT设计模式GitHttpLinuxTypeScriptvue2Vuevue3proxy
网站资讯
文章数目 :
297
已运行时间 :
本站总字数 :
528.5k
最后更新时间 :
©2023 - 2025 By YangTao
鄂ICP备2021000562号
搜索
数据库加载中