1 面试官想通过开发环境了解面试者的经验
2 开发环境,最能体现工作产出的效率
3 会以聊天的形式为主,而不是具体的问题
IDE
webstorm
sublime
vscode
atom
从输入URL到得到HTML的详细过程
Window.onload 和DOMContentLoaded的区别?
加载资源的形式
1 输入URL(或跳转页面)加载HTML
2 http://coding.m.imooc.com
3 加载HTML中的静态资源
4
加载一个资源的过程
1 浏览器根据DNS服务器得到域名的IP地址
2 向这个IP的机器发送http请求
3 服务器收到,处理并返回http请求
4 浏览器得到返回内容
浏览器渲染页面的过程
1 根据HTML结构生成DOM Tree
2 根据CSS生成CSSOM
3将DOM和CSSOM整合形成RenderTree
Git
1 正式项目都需要代码版本管理
2 大型项目需要多人协作开发
3 Git和Linux是一个作者
Git常用的命令
1 git add . 可以将文件提交到暂存区
2 git checkout xxx 丢弃本地修改文件
3 git commit -m “xxx” 将改好的文件提交到本地的仓库里,并且后面加注释
4 git push origin master 将本地仓库的内容提交到远程的仓库里
5 git pull origitn master 将远程仓库的内容下载下来
6 git status 查看仓库当前的状态
7 git reset --hard 本地修改文件,且加入到缓存区
8 git branch 分支
9 git checkout -b xxx/ git checkout xxx 切换分支
10 git merge xxx 将文件合并到一个文件上
丢弃本地修改文件
本地修改文件,但是没有加到缓存区
git checkout .
git clean -xdf
本地修改文件,且加到缓存区
git reset --hard
git clean -xdf
强制把远程仓库的代码覆盖掉本地
git reset --hard origin/master
修改文件后提交的步骤
git add .
git commit -m ‘xxxxx’
git add .
git commit -m ‘xxxxx’
git add .
git commit -m ‘xxxxx’
git push
git add -u 可以用于删除文件时候同步到远程库
第一步:git clone
git clone url filename(此项非必选,默认本地文件与远程地址相同)
第二步:git remote
为了便于管理,Git要求每个远程主机都必须指定一个主机名。git remote命令就用于管理主机名。
不带选项的时候,git remote命令列出所有远程主机。
git remote
使用-v选项,可以参看远程主机的网址。
git remote -v
origin git@github.com:jquery/jquery.git(fetch)
origin git@github.com:jquery/jquery.git(push)
上面命令表示,当前只有一台远程主机,叫做origin,以及它的网址。
克隆版本库的时候,所使用的远程主机自动被Git命名为origin。如果想用其他的主机名,需要用git clone命令的-o选项指定。
git clone -o jQuery https://github.com/jquery/jquery.git
上面命令表示,克隆的时候,指定远程主机叫做jQuery。
git remote show命令加上主机名,可以查看该主机的详细信息。
git remote show <主机名>
git remote add命令用于添加远程主机。
git remote add <主机名> <网址>
git remote rm命令用于删除远程主机。
git remote rm <主机名>
git remote rename命令用于远程主机的改名。
git remote rename <原主机名> <新主机名>
git remote set-url --add origin 往origin库里添加url2 以后再push的时候,就可以同时push多个库了
多处提交config
[remote “origin”]
url = git@git.oschina.net:jiaoshou/reacttest.git
fetch = +refs/heads/:refs/remotes/origin/
url = git@git.coding.net:jsser/reacttest.git
[branch “master”]
remote = origin
merge = refs/heads/master
第三步:git fetch
git fetch <远程主机名>
上面命令将某个远程主机的更新,全部取回本地。
git fetch命令通常用来查看其他人的进程,因为它取回的代码对你本地的开发代码没有影响。
默认情况下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名。
git fetch <远程主机名> <分支名>
比如,取回origin主机的master分支。
git fetch origin master
所取回的更新,在本地主机上要用"远程主机名/分支名"的形式读取。比如origin主机的master,就要用origin/master读取。
git branch命令的-r选项,可以用来查看远程分支,-a选项查看所有分支。
git branch -r
git branch -a
上面命令表示,本地主机的当前分支是master,远程分支是origin/master。
取回远程主机的更新以后,可以在它的基础上,使用git checkout命令创建一个新的分支。
git checkout -b xxxx
上面命令表示,在origin/master的基础上,创建一个新分支。
切换分支 git checkout xxx
删除本地分支 git branch -d xxxxx
此外,也可以使用git merge命令或者git rebase命令,在本地分支上合并远程分支。
git merge origin/master# 或者
git rebase origin/master
上面命令表示在当前分支上,合并origin/master。
第四步:git pull
git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。它的完整格式稍稍有点复杂。
git pull <远程主机名> <远程分支名>:<本地分支名>
比如,取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。
git pull origin next:master
如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
git pull origin next
上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再做git merge。
git fetch origin
git merge origin/next
在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动"追踪"origin/master分支。
Git也允许手动建立追踪关系。
git branch–set-upstream master origin/next
上面命令指定master分支追踪origin/next分支。
如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名。
git pull origin
上面命令表示,本地的当前分支自动与对应的origin主机"追踪分支"(remote-tracking branch)进行合并。
如果当前分支只有一个追踪分支,连远程主机名都可以省略。
git pull
上面命令表示,当前分支自动与唯一一个追踪分支进行合并。
如果合并需要采用rebase模式,可以使用–rebase选项。
git pull–rebase <远程主机名> <远程分支名>:<本地分支名>
如果远程主机删除了某个分支,默认情况下,git pull不会在拉取远程分支的时候,删除对应的本地分支。这是为了防止,由于其他人操作了远程主机,导致git pull不知不觉删除了本地分支。
但是,你可以改变这个行为,加上参数-p就会在本地删除远程已经删除的分支。
git pull-p# 等同于下面的命令
git fetch–prune origin
git fetch-p
第五步:git push
git push命令用于将本地分支的更新,推送到远程主机。它的格式与git pull命令相仿。
git push<远程主机名><本地分支名>:<远程分支名>
注意,分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。
如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
git push origin master
上面命令表示,将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。
git push origin:master# 等同于git push origin–delete master
上面命令表示删除origin主机的master分支。
如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。
git push origin
上面命令表示,将当前分支推送到origin主机的对应分支。
如果当前分支只有一个追踪分支,那么主机名都可以省略。
git push
如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。
git push -u origin master
上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。
git init here – 创建本地仓库(repository),将会在文件夹下创建一个 .git 文件夹,.git 文件夹里存储了所有的版本信息、标记等内容
git remote add origin git@github.com:winter1991/helloworld.git
– 把本地仓库和远程仓库关联起来。如果不执行这个命令的话,每次 push 的时候都需要指定远程服务器的地址
git add – 从本地仓库增删,结果将会保存到本机的缓存里面
git rm --把一个文件删除,并把它从git的仓库管理系统中移除
git commit -m “注释” – 提交,把本机缓存中的内容提交到本机的 HEAD 里面(添加或者删除之后都要commit提交到git仓库才会生效)
git push origin master – 把本地的 commit(提交) push 到远程服务器上, origin 也就是之前 git remote add origin 那个命令里面的 origin,origin 替代了服务器仓库地址:git push git@github.com:winter1991/helloworld.git master
git pull origin master – 从远程服务器 pull 新的改动
git status – 查看状态
git diff – 查看修改内容
git add -A – 提交全部修改
git log – 查看历史记录
git log --pretty=oneline --查看简写版的历史记录
git reset --hard HEAD^ 用HEAD表示当前版本,也就是最新的提交版本,上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。(从现在往原来回退)
cat aaa.html --查看aaa.html文件内容
git reset --hard 3628164 最后加的是commit id 多加几位和别的区分开就行(从现在往任意时间跳转)
git reflog 记录每一次命令
pwd 展示当前所在位置
cd 回到主目录
cd… 返回上一级目录
cd 目录名 打开目录
cd /目录名 从主页开始寻找路径
- git 配置:
git config --global user.name “xxx” – 配置用户名,上传本地 repository 到服务器上的时候,在 Github 上会显示这里配置的上传者信息
git config --global user.email “xxx” – 配置邮箱
git config --list 查看配置列表
配置 sshkey : 上传代码时使用这个 sshkey 来确认是否有上传权限
-
创建本地 ssh : ssh-keygen -t rsa -C “Github 的注册邮箱”
-
在 Github 中添加这个 sshkey :
复制 C:\Documents and Settings\Administrator.ssh\id_rsa.pub 文件中的内容;
登录 Github --> Account Setting --> SSH-KEY --> Add SSH-KEY --> 粘贴id_rsa.pub中的内容; -
验证: ssh -T git@github.com
出现 Hi xxx! You’ve successfully authenticated, but GitHub does not provide shell access. 说明配置成功,可以连接上 Github -
建立仓库 repository :
git init here – 创建本地仓库
git remote add origin git@github.com:用户名/仓库名.git
– 把本地仓库和远程仓库关联起来, 如果不执行这个命令的话,每次 push 的时候都需要指定远程服务器的地址 -
从远程仓库中下载新的改动:
git pull origin master -
提交本地修改到远程仓库中:
git add
git add -A – 将改动添加到本地仓库中
git rm xxx – 从本地仓库中删除指定文件
git rm -r xxx – 从本地仓库中删除指定文件夹
git commit -m “注释” – 把本机缓存中的内容提交到本机的 HEAD 里面
git push origin master – 把本地的 commit push 到远程仓库中
- 使用 .gitignore 文件忽略指定的内容:
- 在本地仓库根目录创建 .gitignore 文件。Win7 下不能直接创建,可以创建 “.gitignore.” 文件,后面的标点自动被忽略;
- 过滤文件和文件夹: [Tt]emp/ 过滤 Temp\temp 文件夹; *.suo 过滤 .suo 文件;
- 不过滤文件和文件夹: !*.c
【SourceTree】删除文件提交git库
git add .
git add -A
git commit -m ‘delete some files’ -a
关掉sourcetree 再重新打开 再推送
1 仓库(Repository)
仓库用来存放项目代码,每个项目对应一个仓库,多个开源项目有多个仓库
2 收藏(Star)
收藏项目,方便下次查看
从输入URL到HTML的详细过程
1 浏览器根据DNS服务器得到域名的IP地址
2 向这个IP的浏览器发送http请求
3 服务器收到,处理并返回http请求
4 浏览器得到返回内容
window.onload 和DOMcontentLoaded的区别
1 window.onload 页面的全部资源加载完毕后才会执行,包括图片,视频等
2 DOM渲染完即可执行,此时 图片。视频还没有加载完
性能优化
只关注核心点,针对面试
1 多使用内存,缓存或者其他的方法
2 减少cpu计算,减少网络请求
从哪里入手
1 加载页面和静态资源
2 页面渲染
加载资源优化
1 静态资源的压缩合并
2 静态资源缓存
3 使用CDN让资源加载更快
4 使用 SSR后端渲染,数据直接输出到HTML中
渲染优化
1 CSS放前面,JS放后面
2懒加载(图片懒加载,下拉加载更多)
3 减少DOM查询,对DOM查询做缓存
4 减少DOM操作,多个操作尽量合并在一起执行
5 事件节流
6 尽早执行操作(如DOMContentLoaded)