Web前端在近几年是越来越火热了,很多人看到了前端的高薪资,更看到了前端行业的发展前景,所以纷纷投入到学习前端技术学习中来。下面给大家总结整理2019年Web前端经典面试题,助力大家找到更好的工作,走向高薪前端之路。
我是一名从事了5年前端的程序员,辞职目前在做讲师,今年年初整理了一份适合2019年学习的web前端干货,从最基HTML+CSS+JS到移动端HTML5到各种框架都有整理,送给每一位前端小伙伴,这里是小白聚集地,欢迎初学和进阶中的小伙伴。"
加QQ群:585843909(招募中)
1、CSS,JS代码压缩,以及代码CDN托管,图片整合。
(1)CSS,JS 代码压缩:
可以应用gulp的gulp-uglify,gulp-minify-css模块完成;可以应用Webpack的 UglifyJsPlugin压缩插件完成。
(2)CDN:
内容分发网络(CDN)是一个经策略性部署的整体系统,包括分布式存储、负载均衡、网络请求的重定向和内容管理4个要件。主要特点有:本地Cache加速,镜像服务,远程加速,带宽优化。关键技术有:内容发布,内容路由,内容交换,性能管理。CDN网站加速适合以咨询为主的网站。CDN是对域名加速不是对网站服务器加速。CDN和镜像站比较不需要访客手动选择要访问的镜像站。CDN使用后网站无需任何修改即可使用CDN获得加速效果。如果通过CDN后看到的网页还是旧网页,可以通过URL推送服务解决,新增的网页和图片不需要URL推送。使用动态网页可以不缓存即时性要求很高的网页和图片。CDN可以通过git或SVN来管理。
(3)图片整合
减少网站加载时间的最有效的方式之一就是减少网站的HTTP请求数。实现这一目标的一个有效的方法就是通过CSS Sprites——将多个图片整合到一个图片中,然后再用CSS来定位。缺点是可维护性差。可以使用百度的fis/Webpack来自动化管理sprite。
2、如何利用Webpack把代码上传服务器以及转码测试?
(1)代码上传:
可以使用sftp-Webpack-plugin,但是会把子文件夹给提取出来,不优雅。可以使用gulp+Webpack来实现。
(2)转码测试
Webpack应用babel来对ES6转码,开启devtool: “source-map" 来进行浏览器测试。应用karma或mocha来做单元测试。
3、项目上线流程是怎样的?
(1)流程建议
模拟线上的开发环境
本地反向代理线上真实环境开发即可。(apache,nginx,nodejs均可实现)
模拟线上的测试环境
模拟线上的测试环境,其实是需要一台有真实数据的测试机,建议没条件搭daily的,就直接用线上数据测好了,只不过程序部分走你们的测试环境而已,有条件搭daily最好。
可连调的测试环境
可连调的测试环境,分为2种。一种是开发测试都在一个局域网段,直接绑hosts即可,不在一个网段,就每人分配一台虚拟的测试机,放在大家都可以访问到的公司内网,代码直接往上布即可。
自动化的上线系统
自动化的上线系统,可以采用Jenkins。如果没有,可以自行搭建一个简易的上线系统,原理是每次上线时都抽取最新的trunk或master,做一个tag,再打一个时间戳的标记,然后分发到cdn就行了。界面里就2个功能,打tag,回滚到某tag,部署。
适合前后端的开发流程
开发流程依据公司所用到的工具,构建,框架。原则就是分散独立开发,互相不干扰,连调时有hosts可绑即可。
(2)简单的可操作流程
代码通过git管理,新需求创建新分支,分支开发,主干发布
上线走简易上线系统,参见上一节
通过gulp+Webpack连到发布系统,一键集成,本地只关心原码开发
本地环境通过Webpack反向代理的server
搭建基于linux的本地测试机,自动完成build+push功能
4、工程化怎么管理的?
gulp和Webpack
5、git常用命令
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
6、Webpack 和 gulp对比
Gulp 就是为了规范前端开发流程,实现前后端分离、模块化开发、版本控制、文件合并与压缩、mock数据等功能的一个前端自动化构建工具。说的形象点,“Gulp就像是一个产品的流水线,整个产品从无到有,都要受流水线的控制,在流水线上我们可以对产品进行管理。” 另外,Gulp是通过task对整个开发过程进行构建。
Webpack 是当下最热门的前端资源模块化管理和打包工具。它可以将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源。还可以将按需加载的模块进行代码分隔,等到实际需要的时候再异步加载。通过 loader的转换,任何形式的资源都可以视作模块,比如 CommonJs 模块、AMD 模块、ES6 模块、CSS、图片、JSON、Coffeescript、LESS 等。
Gulp和Webpack功能实现对比:从基本概念、启动本地Server、sass/less预编译、模块化开发、文件合并与压缩、mock数据、版本控制、组件控制八个方面对Gulp和Webpack进行对比。
7、Webpack打包文件太大怎么办?
Webpack 把我们所有的文件都打包成一个 JS 文件,这样即使你是小项目,打包后的文件也会非常大。可以从去除不必要的插件,提取第三方库,代码压缩,代码分割,设置缓存几个方面着手优化。
8、不想让别人盗用你的图片,访问你的服务器资源该怎么处理?
目前常用的防盗链方法主要有两种:
(1)设置Referer:适合不想写代码的用户,也适合喜欢开发的用户
(2)签名URL:适合喜欢开发的用户
9、精灵图和base64如何选择?
css精灵,用于一些小的图标不是特别多,一个的体积也稍大,比如大于10K(这个没有严格的界定)。
base64,用于小图标体积较小(相对于css精灵),多少都无所谓。字体图标,用于一些别人做好的图标库(也有少数自己去做的)用起来比较方便,他的图标只能用于单色,图标用只能于一种颜色。
10、Webpack怎么引入第三方的库?
拿jQuery为例:
entry: {
page: ‘path/to/page.js’,
jquery: ‘node_modules/jquery/dist/jquery.min.js’
}
new HtmlWebpackPlugin({
filename: ‘index.html’,
template: ‘index.html’,
inject: true,
chunks: [‘jquery’, ‘page’] // 按照先后顺序插入script标签
})
以前十道题为Web前端较长出现的面试题。大家可以收藏学习一下,对于面试Web前端的小伙伴可以多留意,希望对大家有一定的帮助。
1.新建项目2.创建maven项目默认文件夹创建完成目录结构如下图所示:3.添加Tomcat插件,用于启动web程序复制下面的代码放入plugins标签里面 <!--加入tomcat插件--> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artif..
Nagios简介是一款用来监视系统和网络的开源应用软件— 利用其众多的插件实现对本机和远端服务的监控— 当被监控对象异常时,会及时向管理员告警— 提供一批预设好的监控插件,用户可以直接调用— 也可以自定义Shell脚本来监控服务,适合各类企业的业务监控— 可通过Web页面显示对象状态,日志,告警信息搭建Nagios监控服务器 *...
Spring MVC 和 Spring 总结1. 为什么使用Spring ? 1). 方便解耦,简化开发 通过Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。 2). AOP编程的支持 通过Spring提供的AOP功能,方便进行面向切面的编程,如性能监测、事务管理、日志记...
ln(MN)=lnM +lnN ln(M/N)=lnM-lnN ln(M^n)=nlnM ln1=0 lne=1 注意,拆开后,M,N需要大于0 没有 ln(M+N)=lnM+lnN,和ln(M-N)=lnM-lnN lnx 是e^x的反函数,也就是说 ln(e^x).1、ln是以e为底的对数,即底数为e,e是自然常数,约等于2.71828,在一般的计算中不要求算出具体数值。2、方法一:ln2-l...
介绍GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。与GitHub的主要区别是:GitHub提供公共仓库和私有仓库,但如果需要使用私有仓库,是需要收费的。而Gitlab可以免费让用户设置仓库的权限,从而可以让指定的人看到指定的
$ g++ 编译错误之没有那个文件或目录 今天使用g++编译的时候,遇到了 没有那个文件夹或目录 的错误,改了好久没改明白,看到各种说什么缺少包的都不能解决,最后终于找到了办法: 其实还是你自己代码的原因我的终端提示错误是:fatal error: String: 没有那个文件或目录 看到error后边的提示了吗?原来之前一直再用java写代码,而
在使用SQL语句限制条件时,使用时间限制,很常用,也有很多地方需要统计一些数据而要使用时间限制语句。时间限制语句有很多种写法。但基本的还是围绕着DateTime,DATEDIFF,GetDate()等。其实,差不多任何的时间限制,都能使用DATEDIFF来完成。所以,下面先介绍一下DATEDIFF. 语法:DATEDIFF ( datepart , startdate
题目链接几何部分已知圆的半径为1,我们看如何求出圆上两点距离:首先∠AOB∠AOB∠AOB已经确定,为θ=2π∗(α−β)θ=2π*(α-β)θ=2π∗(α−β),那么我们可以求出△AOB△AOB△AOB的面积S=r2∗sinθ2=r2∗sinθ2∗cosθ2{S=\frac{r^2*sinθ}{2}=r^2*sin\frac{θ}{2}*cos\frac{θ}{2}}S=2r2∗sinθ=r2∗sin2θ∗cos2θ,设∣AB∣=x|AB|=x∣AB∣=x,从OOO点作ABABAB的垂线
该文章解决微信小程序开发中的页面跳转传递参数问题
宿主机如果需要使用virsh console到虚拟机的shell,需要修改虚拟机的相关配置文件cat > /etc/default/grub << EOFGRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"GRUB_DEFAULT=savedGRUB_DISABLE_SUBMENU=trueGRUB_T...
转自:https://fanfansann.blog.csdn.net/article/details/105493218目录F o r e w o r d ForewordForeword T e x t P a r t Text\ PartTextPart 一、S T L STLSTL标准模版库 二、动态规划 {\ \ \ }d y n a m i c p r o g r a m m i n g dynamic\ programmingdynamicprogr...
Qt使用日志框架log4qt1.下载log4qt源码,导入qtCreator中,进行编译,生成动态/静态库,源码的github地址。附件中可以下载编译好的静态lib库。2.新建Qt项目,添加上一步骤中编译的库和需要的头文件,如下图所示。3.添加资源文件log4qt.conf## 指定扩展器log4j.logger.log=DEBUG, console, daily## 控制台log4j.appender.console=org.apache.log4j.ConsoleA