web前端面试常考问题——持续更新中(5.20)

        1.介绍一下你的技术栈
            HTML5 + CSS3 + ES6 + Jquery + React + Webpack + git + npm ....

        2.简单自我介绍

        3.电商网站怎样做优化,提高加载速度?

        4.什么是同源策略,如何实现跨域?
            同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSRF等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。

            同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。若地址里面的协议、域名和端口号均相同则属于同源。

            如何实现跨域?

            jsonp跨域、nginx反向代理、node.js中间件代理跨域、后端设置http header、后端在服务器上设置cors。

            1.jsonp实现跨域
               


            2.跨域资源共享(CORS)

            https://segmentfault.com/a/1190000011145364


        5.什么CSS放前面,JS脚本放后面?

            下载某一个js时其他任务是暂停的,需要等这个JS下载并执行完毕后再下载其他的。


        6.http协议中 GET和POST有什么区别,分别适用什么场景?
            

        7. http 状态码 200 302 304 403 404 500分别代表什么?
                1 消息类
                    100  Continue   继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息

                2 成功
                    200  OK         正常返回信息
                    201  Created    请求成功并且服务器创建了新的资源
                    202  Accepted   服务器已接受请求,但尚未处理

                3 重定向
                    301 Moved Permanently  请求的网页已永久移动到新位置。
                    302 Found       临时性重定向。
                    303 See Other   临时性重定向,且总是使用 GET 请求新的 URI。
                    304  Not Modified 自从上次请求后,请求的网页未修改过。 

                4 错误,一般是指客户端错误
                    400 Bad Request  服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。
                    401 Unauthorized 请求未授权。
                    403 Forbidden   禁止访问。
                    404 Not Found   找不到如何与 URI 相匹配的资源。

                5 6 服务器错误
                    500 Internal Server Error  最常见的服务器端错误。
                    503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。


        8.什么是XSS CSRF攻击,如何防范?


        9.一个页面从输入URL到加载显示完成,这个过程发生了什么?
            简洁版:
                1.浏览器根据请求的URL交给DNS域名解析,找到真实的IP,向服务器发起请求;
                2.服务器交给后台处理完成后返回数据,浏览器接收文件(HTML、CSS、JavaScript等);
                3.浏览器对加载到的资源(HTML、CSS、JavaScript等)进行语法解析,构建相应的内部数据结构(DOM树、CSS树、render树等);
                4.载入解析到的资源文件、渲染页面、完成。


            详细版:
                1.首先浏览器开启一个线程来处理这个请求,对URL分析判断,如果是http协议就按照Web方式来处理;
                2.其次浏览器会对URL进行解析,一般包括(协议头、主机域名或IP地址、端口号、请求路径、查询参数、hash等),然后开启网络线程发出一个完整到http请求;
                3.当然一般我们输入的URL是服务器域名,这时就需要DNS通过域名查询得到对应的IP;
                4.DNS首先会查看浏览器DNS缓存,没有就查询计算机本地DNS缓存,还没有就询问递归式DNS服务器(即网络提供商,一般这个服务器都会有自己的缓存,所以IP查询一般在这里完成),如果没有缓存,那就需要通过根域名和TLD域名服务器指到对应的权威DNS服务器找回记录,并缓存到递归式服务器,然后递归服务器在将记录返回给本地。
                5.有了IP地址,此时网络层便会通过IP地址寻的对应服务器的物理地址
                6.寻得服务器地址,客户端在网络传输层便可以和服务器通过三次握手建立tcp\ip连接
                7.连接建立后网络数据链路层将数据包装成帧;
                8.最后物理层利用物理介质进行传输;
                9.到了服务器,就会通过相反的方式将数据一层一层的还原回去;
                10.请求到了后台服务器,一般会有统一的验证,如安全验证、跨域验证等,验证未通过就直接返回相应的http报文
                11.验证通过后,就会进入后台代码,此时程序收到请求,然后执行对应的操作(如查询数据库等);
                12.如果浏览器访问过,且缓存上有对应的资源,便会与服务器最后修改时间对比,一致便返回304,告诉浏览器可使用本地缓存;
                13.前端浏览器接收到响应成功的报文后便开始下载网页
                14.下载完的网页将被交给浏览器内核(渲染进程)进行处理:
                    1. 根据顶部定义的DTD类型进行对应的解析方式;
                    2. 渲染进程内部是多线程的,网页的解析将会被交给内部的GUI渲染线程处理;
                    3. 首先渲染线程中的HTML解释器,将HTML网页和资源从字节流解释转换成字符流;
                    4. 再通过词法分析器将字符流解释成词语;
                    5. 之后经过语法分析器根据词语构建成节点;最后通过这些节点组建一个DOM树;
                    6. 这个过程中,如果遇到的DOM节点是JavaScript代码,就会调用JavaScript引擎对JavaScript代码进行解释执行,此时由JavaScript引擎和GUI渲染线程的互斥,GUI渲染线程就会被挂起,渲染过程停止;如果JavaScript代码的运行中对DOM树进行了修改,那么DOM的构建需要从新开始;
                    7. 如果节点需要依赖其他资源,如(图片,CSS等),便会调用网络模块的资源加载器来加载它们,但它们是异步的,不会阻塞当前DOM树的构建;
                    8. 如果遇到的是JavaScript资源URL(没有标记异步),则需要停止当前DOM的构建,直到JavaScript的资源加载并被JavaScript引擎执行后才继续构建DOM;
                    9. 对于CSS,CSS解释器会将CSS文件解释成内部表示结构,生成CSS规则树;
                    10. 然后合并CSS规则树和DOM树,生成render渲染树;
                    11. 最后对render树进行布局和绘制,并将结果通过IO线程传递给Browser控制进程进行显示。

        10.常用正则表达式


            //验证邮箱
            /^w+@([0-9a-zA-Z]+[.])+[a-z]{2,4}$/


            //验证手机号
            /^1[3|5|8|7]d{9}$/


            //验证URL
            /^http://.+./


            //验证身份证号码
            /(^d{15}$)|(^d{17}([0-9]|X|x)$)/


        11.什么是渐进增强和优雅降级?


            * 渐进增强 :针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级浏览器进行效果、交互等改进和追加功能达到更好的用户体验。


            * 优雅降级 :一开始就构建完整的功能,然后再针对低版本浏览器进行兼容


        12.请解释什么是事件代理


            * 事件代理(Event Delegation),又称之为事件委托。是 JavaScript 中常用绑定事件的常用技巧。顾名思义,“事件代理”即是把原本需要绑定的事件委托给父元素,让父元素担当事件监听的职务。事件代理的原理是DOM元素的事件冒泡。使用事件代理的好处是可以提高性能


        13.常见浏览器内核有哪些?
           * Blink内核:新版 Chrome、新版 Opera
           * Webkit内核:Safari、原Chrome
           * Gecko内核:FireFox、Netscape6及以上版本
           * Trident内核(又称MSHTML内核):IE、国产浏览器
           * Presto内核:原Opera7及以上


        14.请说说对MVC,MVP和MVVM的理解


            * MVC即model\view\controller,是最常见的软件架构模式。view是指用户界面,controller则处理业务逻辑,而model则用来存储数据。view传送指令到controller,controller完成业务逻辑后要求model改变状态,model将新数据发送给view,使用户得到反馈。各部分的通信都是单向的。


            * MVP将controller改为presenter,在这种模式中,各个部分之间的通信都是双向的。view与model不发送直接联系,都通过presenter传递。view非常薄,不部署任何业务逻辑,而presenter非常厚。


            * MVVM将presenter改为viewModel,和MVP模式非常相似,唯一的区别在于它是双向绑定,view改变,自动反应在viewModel上,反之亦然。




        15. 重绘和回流(考察频率:中)


            * 重绘:当页面中元素样式的改变并不影响它在文档流中的位置时(例如:color、background-color、visibility等),浏览器会将新样式赋予给元素并重新绘制它,这个过程称为重绘。


            * 回流:当Render Tree(DOM)中部分或全部元素的尺寸、结构、或某些属性发生改变时,浏览器重新渲染部分或全部文档的过程称为回流。


            回流要比重绘消耗性能开支更大。
            回流必将引起重绘,重绘不一定会引起回流
        
        16.浏览器渲染页面过程:


            * 根据 HTML 结构生成 DOM 树
            * 根据 CSS 生成 CSSOM
            * 将 DOM 和 CSSOM 整合形成 RenderTree
            * 根据 RenderTree 开始渲染和展示
            * 遇到script标签时,会执行并阻塞渲染




        17.介绍一下你对浏览器内核的理解


            主要分成两部分:渲染引擎(layout engineer或Rendering Engine)和JS引擎。


            * 渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其它需要编辑、显示网络内容的应用程序都需要内核。


            * JS引擎则:解析和执行javascript来实现网页的动态效果。


            * 最开始渲染引擎和JS引擎并没有区分的很明确,后来JS引擎越来越独立,内核就倾向于只指渲染引擎。
        
        18.你有用过哪些前端性能优化的方法?


            (1) 减少http请求次数:CSS,Sprites,JS、CSS源码压缩、图片大小控制合适;网页Gzip,CDN托管,data缓存 ,图片服务器。


            (2) 前端模板 JS+数据,减少由于HTML标签导致的带宽浪费,前端用变量保存AJAX请求结果,每次操作本地变量,不用请求,减少请求次数


            (3) 用innerHTML代替DOM操作,减少DOM操作次数,优化javascript性能。


            (4) 当需要设置的样式很多时设置className而不是直接操作style。


            (5) 少用全局变量、缓存DOM节点查找的结果。减少IO读取操作。


            (6) 避免使用CSS Expression(css表达式)又称Dynamic properties(动态属性)。


            (7) 图片预加载,将样式表放在顶部,将脚本放在底部  加上时间戳。


            (8) 避免在页面的主体布局中使用table,table要等其中的内容完全下载之后才会显示出来,显示比div+css布局慢。对普通的网站有一个统一的思路,就是尽量向前端优化、减少数据库操作、减少磁盘IO。向前端优化指的是,在不影响功能和体验的情况下,能在浏览器执行的不要在服务端执行,能在缓存服务器上直接返回的不要到应用服务器,程序能直接取得的结果不要到外部取得,本机内能取得的数据不要到远程取,内存能取到的不要到磁盘取,缓存中有的不要去数据库查询。减少数据库操作指减少更新次数、缓存结果减少查询次数、将数据库执行的操作尽可能的让你的程序完成(例如join查询),减少磁盘IO指尽量不使用文件系统作为缓存、减少读写文件次数等。程序优化永远要优化慢的部分,换语言是无法“优化”的。


        19.如何做SEO优化?


            (1)网站结构布局优化:尽量简单、开门见山,提倡扁平化结构。
                1. 控制首页链接数量
                2.扁平化的目录层次,尽量让“蜘蛛”只要跳转3次,就能到达网站内的任何一个内页
                3.导航优化
                4. 网站的结构布局--不可忽略的细节
                      页面头部:logo及主导航,以及用户的信息。
                      页面主体:左边正文,包括面包屑导航及正文;右边放热门文章及相关文章,好处:留住访客,让访客多停留,对“蜘蛛”而言,这些文章属于相关链接,增强了页面相关性,也能增强页面的权重。
                      页面底部:版权信息和友情链接。
                      特别注意:分页导航写法,推荐写法:“首页 1 2 3 4 5 6 7 8 9 下拉框”,这样“蜘蛛”能够根据相应页码直接跳转,下拉框直接选择页面跳转。而下面的写法是不推荐的,“首页 下一页 尾页”,特别是当分页数量特别多时,“蜘蛛”需要经过很多次往下爬,才能抓取,会很累、会容易放弃。
               5.控制页面的大小,减少http请求,提高网站的加载速度。
                  一个页面最好不要超过100k,太大,页面加载速度慢。当速度很慢时,用户体验不好,留不住访客,并且一旦超时,“蜘蛛”也会离开。


            (2)网页代码优化
              1.标题:只强调重点即可,尽量把重要的关键词放在前面,关键词不要重复出现,尽量做到每个页面的<title>标题中不要设置相同的内容。 <br> <br> <br>              2.<meta keywords>标签:关键词,列举出几个页面的重要关键字即可,切记过分堆砌。 <br> <br> <br>              3.<meta description>标签:网页描述,需要高度概括网页内容,切记不能太长,过分堆砌关键词,每个页面也要有所不同。 <br> <br> <br>              4.<body>中的标签:尽量让代码语义化,在适当的位置使用适当的标签,用正确的标签做正确的事。让阅读源码者和“蜘蛛”都一目了然。比如:h1-h6 是用于标题类的,<nav>标签是用来设置页面主导航的等。 <br> <br> <br>              5.<a>标签:页内链接,要加 “title” 属性加以说明,让访客和 “蜘蛛” 知道。而外部链接,链接到其他网站的,则需要加上 el="nofollow" 属性, 告诉 “蜘蛛” 不要爬,因为一旦“蜘蛛”爬了外部链接之后,就不会再回来了。 <br> <br> <br>              6.正文标题要用<h1>标签:“蜘蛛” 认为它最重要,若不喜欢<h1>的默认样式可以通过CSS设置。尽量做到正文标题用<h1>标签,副标题用<h2>标签, 而其它地方不应该随便乱用 h 标题标签。 <br> <br> <br>            8.表格应该使用<caption>表格标题标签 <br> <br> <br>            9.<img>应使用 "alt" 属性加以说明 <br> <br> <br>            10.<strong>、<em>标签 : 需要强调时使用。<strong>标签在搜索引擎中能够得到高度的重视,它能突出关键词,表现重要的内容,<em>标签强调效果仅次于<strong>标签。 <br> <br> <br> <br> <br>    (二)HTML部分: <br>        1.HTML5新标签有哪些? <br>            答: <br>                * 绘画 canvas <br>                * 用于媒介回放的 video 和 audio 元素 <br>                * 本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失 <br>                * sessionStorage 的数据在浏览器关闭后自动删除 <br>                * 语意化更好的内容元素,比如 article、footer、header、nav、section <br>                * 表单控件,calendar、date、time、email、url、search <br>                * 新的技术webworker, websocket, Geolocation <br>                 <br> <br> <br>        2.常用meta标签有哪些? <br>            <!-- 仅针对IOS的Safari顶端状态条的样式(可选default/black/black-translucent ) --> <br>            <meta name="apple-mobile-web-app-status-bar-style" content="black" /> <br> <br> <br>            <!-- IOS中禁用将数字识别为电话号码/忽略Android平台中对邮箱地址的识别 --> <br>            <meta name="format-detection"content="telephone=no, email=no" /> <br> <br> <br>            其他meta标签 <br>            <!-- 启用360浏览器的极速模式(webkit) --> <br>            <meta name="renderer" content="webkit"> <br> <br> <br>            <!-- 避免IE使用兼容模式 --> <br>            <meta http-equiv="X-UA-Compatible" content="IE=edge"> <br> <br> <br>            <!-- 针对手持设备优化,主要是针对一些老的不识别viewport的浏览器,比如黑莓 --> <br>            <meta name="HandheldFriendly" content="true"> <br> <br> <br>            <!-- 微软的老式浏览器 --> <br>            <meta name="MobileOptimized" content="320"> <br> <br> <br>            <!-- uc强制竖屏 --> <br>            <meta name="screen-orientation" content="portrait"> <br> <br> <br>            <!-- QQ强制竖屏 --> <br>            <meta name="x5-orientation" content="portrait"> <br> <br> <br>            <!-- UC强制全屏 --> <br>            <meta name="full-screen" content="yes"> <br> <br> <br>            <!-- QQ强制全屏 --> <br>            <meta name="x5-fullscreen" content="true"> <br> <br> <br>            <!-- UC应用模式 --> <br>            <meta name="browsermode" content="application"> <br> <br> <br>            <!-- QQ应用模式 --> <br>            <meta name="x5-page-mode" content="app"> <br> <br> <br>            <!-- windows phone 点击无高光 --> <br>            <meta name="msapplication-tap-highlight" content="no"> <br>                 <br> <br> <br>        3.viewport属性 <br>            <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /> <br>            // width           设置viewport宽度,为一个正整数,或字符串‘device-width’ <br>            // device-width    设备宽度 <br>            // height          一般设置了宽度,会自动解析出高度,可以不用设置 <br>            // initial-scale    默认缩放比例(初始缩放比例),为一个数字,可以带小数 <br>            // minimum-scale    允许用户最小缩放比例,为一个数字,可以带小数 <br>            // maximum-scale    允许用户最大缩放比例,为一个数字,可以带小数 <br>            // user-scalable    是否允许手动缩放 <br> <br> <br>        4.请描述一下 cookies,sessionStorage 和 localStorage 的区别? <br> <br> <br>            * cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密) <br>            * cookie数据始终在同源的http请求中携带(即使不需要),记会在浏览器和服务器间来回传递 <br>            * sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存 <br> <br> <br>            存储大小: <br>            * cookie数据大小不能超过4k <br>            * sessionStorage和localStorage虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大 <br> <br> <br>            有期时间: <br>            * localStorage 存储持久数据,浏览器关闭后数据不丢失除非主动删除数据 <br>            * sessionStorage 数据在当前浏览器窗口关闭后自动删除 <br>            * cookie 设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭 <br> <br> <br>        5.什么是语义化,为什么要语义化,谈谈你的理解 <br> <br> <br>            HTML标签的语义化是指:通过使用包含语义的标签(如h1-h6)恰当地表示文档结构 <br>            css命名的语义化是指:为html标签添加有意义的class <br> <br> <br>            为什么需要语义化: <br>                1.去掉样式后页面呈现清晰的结构 <br>                2.盲人使用读屏器更好地阅读 <br>                3.搜索引擎更好地理解页面,有利于收录 <br>                4.便团队项目的可持续运作及维护 <br> <br> <br>            简述一下你对HTML语义化的理解? <br>                1.用正确的标签做正确的事情。 <br>                2.html语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析; <br>                3.即使在没有样式CSS情况下也以一种文档格式显示,并且是容易阅读的; <br>                4.搜索引擎的爬虫也依赖于HTML标记来确定上下文和各个关键字的权重,利于SEO; <br>                5.使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解 <br> <br> <br> <br> <br>        6.label 的作用是什么?怎么使用的? <br>            label标签来定义表单控件的关系: <br>                当用户选择label标签时,浏览器会自动将焦点转到和label标签相关的表单控件上 <br> <br> <br>            使用方法1: <br>                <label for="mobile">Number:</label> <br>                <input type="text" id="mobile"/> <br>            使用方法2: <br>                <label>Date:<input type="text"/></label> <br> <br> <br>    (三)CSS部分: <br> <br> <br>        1. 介绍一下标准的CSS的盒子模型?与低版本IE的盒子模型有什么不同的? <br>                * 标准盒子模型:宽度=内容的宽度(content)+ border + padding + margin <br>                * 低版本IE盒子模型:宽度=内容宽度(content+border+padding)+ margin <br> <br> <br> <br> <br>        2.什么是 CSS3 Flex 弹性盒子模型布局,有哪些属性 <br>            答: <br>                * 一个用于页面布局的全新CSS3功能,Flexbox可以把列表放在同一个方向(从上到下排列,从左到右),并让列表能延伸到占用可用的空间。 <br>               * 较为复杂的布局还可以通过嵌套一个伸缩容器(flex container)来实现。 <br>               * 采用Flex布局的元素,称为Flex容器(flex container),简称"容器"。 <br>               * 它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称"项目"。 <br>               * 常规布局是基于块和内联流方向,而Flex布局是基于flex-flow流可以很方便的用来做局中,能对不同屏幕大小自适应。 <br>               * 在布局上有了比以前更加灵活的空间。 <br> <br> <br>        3.CSS3 有哪些新属性 <br>            答:1.transform 元素变形效果 <br>                2.transition 过渡效果 <br>                3.animation 动画效果 <br>                https://www.cnblogs.com/wuyanliang/p/5862643.html <br> <br> <br>        4.CSS 有哪些选择器 <br>            答:1.标签选择器 (p li div) <br>                2.类选择器 (.first .top) <br>                3.ID选择器 (#test #word) <br>                4.相邻选择器(h1 + p) <br>                5.后代选择器 (li a) <br>                6.属性选择器 (a rel=["external"]) <br>                7.伪类选择器 (:hover) <br>                8.通配符选择器 (*) <br> <br> <br>                哪些属性可以继承? <br>                    color,font-size,font-family <br> <br> <br> <br> <br>        5.display 有哪些值 <br>            答:* block          块类型。默认宽度为父元素宽度,可设置宽高,换行显示。 <br>                * none           缺省值。象行内元素类型一样显示。 <br>                * inline        行内元素类型。默认宽度为内容宽度,不可设置宽高,同行显示。 <br>                * inline-block   默认宽度为内容宽度,可以设置宽高,同行显示。 <br>                * list-item      象块类型元素一样显示,并添加样式列表标记。 <br>                * table          此元素会作为块级表格来显示。 <br>                * inherit        规定应该从父元素继承 display 属性的值。 <br>                 <br> <br> <br>        6.display:none 和 visibity: hidden 有什么区别 <br>            <br>            都是隐藏元素,但是前者文档布局中不占用空间,后者仍占用空间 <br> <br> <br>            display:none隐藏产生reflow和repaint(回流与重绘) <br> <br> <br>            前者有株连性,即父元素设置display: none后子元素不管怎样设置都不能显示,而后者的子元素通过设置visibility: visible后还是能显示出来的 <br> <br> <br>        7.position 有哪些值  <br>            答:absolute: <br>                    生成绝对定位的元素,相对于值不为 static的第一个父元素进行定位。 <br> <br> <br>                fixed (老IE不支持): <br>                    生成绝对定位的元素,相对于浏览器窗口进行定位。 <br> <br> <br>                relative: <br>                    生成相对定位的元素,相对于其正常位置进行定位。 <br> <br> <br>                static: <br>                    默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right z-index 声明)。 <br> <br> <br>                inherit: <br>                    规定从父元素继承 position 属性的值。 <br> <br> <br>                sticky <br>                    position属性中最有意思的就是sticky了,设置了sticky的元素,在屏幕范围(viewport)时该元素的位置并不受到定位影响(设置是top、left等属性无效),当该元素的位置将要移出偏移范围时,定位又会变成fixed,根据设置的left、top等属性成固定位置的效果。 <br> <br> <br>                    ticky属性有以下几个特点: <br> <br> <br>                    该元素并不脱离文档流,仍然保留元素原本在文档流中的位置。 <br> <br> <br>                    当元素在容器中被滚动超过指定的偏移值时,元素在容器内固定在指定位置。亦即如果你设置了top: 50px,那么在sticky元素到达距离相对定位的元素顶部50px的位置时固定,不再向上移动。 <br> <br> <br>                    元素固定的相对偏移是相对于离它最近的具有滚动框的祖先元素,如果祖先元素都不可以滚动,那么是相对于viewport来计算元素的偏移量。 <br> <br> <br>        8.box-sizing属性? <br>            答:用来控制元素的盒子模型的解析模式,默认为content-box <br>            box-sizing: context-box:W3C的标准盒子模型 <br>            box-sizing: border-box:IE传统盒子模型 <br> <br> <br>        9. CSS3新增伪类有那些? <br>            1. p:first-of-type 选择属于其父元素的首个元素 <br>            2. p:last-of-type 选择属于其父元素的最后元素 <br>            3. p:only-of-type 选择属于其父元素唯一的元素 <br>            4. p:only-child 选择属于其父元素的唯一子元素 <br>            5. p:nth-child(2) 选择属于其父元素的第二个子元素 <br>            6. :enabled :disabled 表单控件的禁用状态。 <br>            7. :checked 单选框或复选框被选中。 <br> <br> <br>        10.如何让网站的图文不可复制? <br>            <style> <br>                div{ <br>                    -webkit-user-select: none;  <br>                    -ms-user-select: none; <br>                    -moz-user-select: none; <br>                    user-select: none; <br>                } <br>            </style> <br>             <br> <br> <br>        11.css实现单行文本溢出显示 <br>            <style> <br>                div{ <br>                    overflow: hidden; <br>                    text-overflow: ellipsis; <br>                    white-space: nowrap; <br>                } <br>            </style> <br> <br> <br>        12.如何让一个盒子垂直水平居中? <br>            1、定位 盒子宽高已知,  <br>            position: absolute; left: 50%; top: 50%;  <br>            margin-left:-自身一半宽度; margin-top: -自身一半高度; <br> <br> <br>            2、table-cell布局  <br>            父级 display: table-cell; vertical-align: middle;   <br>            子级 margin: 0 auto; <br> <br> <br>            3、定位 + transform ; 适用于 子盒子 宽高不定时 <br>                position: relative / absolute; <br>                /*top和left偏移各为50%*/ <br>                   top: 50%; <br>                   left: 50%; <br>                /*translate(-50%,-50%) 偏移自身的宽和高的-50%*/ <br>                transform: translate(-50%, -50%);  <br> <br> <br>            4、flex 布局 <br>                父级:  <br>                    /*flex 布局*/ <br>                    display: flex; <br>                    /*实现垂直居中*/ <br>                    align-items: center; <br>                    /*实现水平居中*/ <br>                    justify-content: center; <br>            再加一种水平方向上居中 :margin-left : 50% ; transform: translateX(-50%); <br> <br> <br> <br> <br>        13.margin 外边距折叠什么? <br> <br> <br>            外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。 <br>            合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。 <br> <br> <br>        14.opacity() 和 rgba()有什么区别? <br> <br> <br>             rgba() : 作用于颜色,如background-color、text-shadow、box-shadow等; <br>             opacity() :作用于元素 <br> <br> <br>        15.Less 和Sass 了解吗,什么是CSS预处理器? <br> <br> <br>             - 预处理器例如:LESS、Sass、Stylus,用来预编译Sass或less,增强了css代码的复用性,还有层级、mixin、变量、循环、函数等,具有很方便的UI组件模块化开发能力,极大的提高工作效率。 <br> <br> <br>            - 后处理器例如:PostCSS,通常被视为在完成的样式表中根据CSS规范处理CSS,让其更有效;目前最常做的是给CSS属性添加浏览器私有前缀,实现跨浏览器兼容性的问题。 <br> <br> <br>        16.浮动是如何产生的?清除浮动方法有哪些? <br> <br> <br>            清除浮动是为了清除使用浮动元素产生的影响。浮动的元素,高度会塌陷,而高度的塌陷使我们页面后面的布局不能正常显示。 <br>             <br>            清除浮动的方法: <br>              1、父级div定义height; <br>              2、父级div 也一起浮动; <br>              3、常规的使用一个class; <br>                  <style> <br>                        .clearfix::before, .clearfix::after { <br>                            content: " "; <br>                            display: table; <br>                        } <br>                        .clearfix::after { <br>                            clear: both; <br>                        } <br>                        .clearfix { <br>                            *zoom: 1; <br>                        } <br>                  </style> <br>              4、SASS编译的时候,浮动元素的父级div定义伪类:after <br>                &::after,&::before{ <br>                    content: " "; <br>                      visibility: hidden; <br>                      display: block; <br>                      height: 0; <br>                      clear: both; <br>                } <br> <br> <br>            清除浮动原理: <br>              1) display:block 使生成的元素以块级元素显示,占满剩余空间; <br>              2) height:0 避免生成内容破坏原有布局的高度。 <br>              3) visibility:hidden 使生成的内容不可见,并允许可能被生成内容盖住的内容可以进行点击和交互; <br>              4)通过 content:"."生成内容作为最后一个元素,至于content里面是点还是其他都是可以的,例如oocss里面就有经典的 content:".",有些版本可能content 里面内容为空,一丝冰凉是不推荐这样做的,firefox直到7.0 content:" "仍然会产生额外的空隙; <br>              5)zoom:1 触发IE hasLayout。 <br>              通过分析发现,除了clear:both用来闭合浮动的,其他代码无非都是为了隐藏掉content生成的内容,这也就是其他版本的闭合浮动为什么会有font-size:0,line-height:0。 <br> <br> <br> <br> <br> <br> <br>        17. 自定义字体如何使用? <br>            <style> <br>                @font-face{ <br>                    font-family:BorderWeb; <br>                   src:url(BorderWeb.eot) <br>                } <br>                .border{ <br>                   font-family:"BorderWeb" <br>                } <br>            </style> <br> <br> <br>        18.行内元素有哪些?块级元素有哪些? 空(void)元素有那些? <br> <br> <br>            首先:CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,如div的display默认值为“block”,则为“块级”元素;span默认display属性值为“inline”,是“行内”元素。 <br> <br> <br>          (1)行内元素有:a b span img input select strong(强调的语气) <br>          (2)块级元素有:div ul ol li dl dt dd h1 h2 h3 h4…p <br> <br> <br>          (3)常见的空元素: <br>            <br> <hr> <img> <input> <link> <meta> <br>            鲜为人知的是: <br>            <area> <base> <col> <command> <embed> <keygen> <param> <source> <track> <wbr> <br> <br> <br>        19.CSS3有哪些新特性? <br> <br> <br>            新增各种CSS选择器  (: not(.input):所有 class 不是“input”的节点) <br>            圆角          (border-radius:8px) <br>            多列布局        (multi-column layout) <br>            阴影和反射   (Shadow\Reflect) <br>            文字特效        (text-shadow、) <br>            文字渲染        (Text-decoration) <br>            线性渐变        (gradient) <br>            旋转          (transform) <br>            缩放,定位,倾斜,动画,多背景 <br>            例如:transform:\scale(0.85,0.90)\ translate(0px,-30px)\ skew(-9deg,0deg)\Animation: <br> <br> <br>        20.介绍一下几种常用的单位 px em rem <br> <br> <br>            1. px像素(Pixel)。相对长度单位。像素px是相对于显示屏幕分辨率而言的。一般是固定的无法调整。 <br> <br> <br>            2.em是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸(16px)。 <br> <br> <br>            3.rem是CSS3新增的一个相对单位(root em 根em),仍然是相对大小,但相对的只是HTML根元素 <br> <br> <br>        21.::before 和 :after中双冒号和单冒号 有什么区别?解释一下这2个伪元素的作用 <br> <br> <br>            单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素。 <br>            (伪元素由双冒号和伪元素名称组成) <br> <br> <br>            双冒号是在当前规范中引入的,用于区分伪类和伪元素。不过浏览器需要同时支持旧的已经存在的伪元素写法, <br>            比如:first-line、:first-letter、:before、:after等, <br>            而新的在CSS3中引入的伪元素则不允许再支持旧的单冒号的写法。 <br> <br> <br>            想让插入的内容出现在其它内容前,使用::before,否者,使用::after; <br>            在代码顺序上,::after生成的内容也比::before生成的内容靠后。 <br>            如果按堆栈视角,::after生成的内容会在::before生成的内容之上 <br> <br> <br>    (四)页面常见布局方式    <br> <br> <br>            一:单列布局 <br>                <style> <br>                    .header,.main,.footer{width: 800px;height: 50px;line-height:50px;margin: 0 auto;background-color: #eee;text-align: center;} <br>                    .main{height: 300px;line-height: 300px;background-color: #0066ff} <br>                </style> <br>                <div class="header">header</div> <br>                <div class="main">main</div> <br>                <div class="footer">footer</div> <br> <br> <br> <br> <br>            二:两列布局 <br>                <style> <br>                    .header,.footer{width: 800px;height: 50px;line-height:50px;margin: 0 auto;background-color: #eee;text-align: center;} <br>                    .main{width: 800px;margin: 0 auto} <br>                    .main-left{width: 200px;height: 400px;background-color: #0066ff;float: left;} <br>                    .main-right{width: 600px;height: 400px;background-color: #ff6666;float: right;} <br>                    /*清除浮动 clearfix*/ <br>                    .clearfix::before, .clearfix::after { <br>                        content: " "; <br>                        display: table; <br>                    } <br>                    .clearfix::after { <br>                        clear: both; <br>                    } <br>                    .clearfix { <br>                        *zoom: 1; <br>                    } <br>                </style> <br> <br> <br>            三:三列布局 <br> <br> <br>            四:混合布局 <br> <br> <br>            五:定宽布局 <br> <br> <br>            六:圣杯布局 <br> <br> <br>            七:双飞翼布局 <br> <br> <br> <br> <br>    (四)JS概念题: <br>         <br>        1.Array数组 有哪些方法? <br>            <script>    <br>                push()  <br>                // 添加到数组的尾部  //['a','b','c'].push('d') 返回4 <br>                unshift()  <br>                // 添加到数组开头 <br>                pop()  <br>                // 删除数组的最后一个元素  // ['a','b','c'].pop() 返回"c" <br>                shift()  <br>                // 删除第一个元素  // ['a','b','c'].shift() 返回"a" <br>                join()  <br>                // 数组转换为字符串  // ['a','b','c'].join('-'); 返回"a-b-c" <br>                reverse()  <br>                // 颠倒数组元素顺序 // ['a','b','c'].reverse(); 返回["c","b","a"] <br>                sort()   <br>                //数组排序 <br>                // 降序 function(a,b){return b-a} <br>                // 升序 function(a,b){return a-b} <br>                concat()  <br>                // 连接两个或多个数组 <br>                slice()  <br>                // 数组截取  <br>                splice()  <br>                // 数组删除、插入、替换 <br>                indexof()  <br>                //从数组开头开始向后查找 <br>                lastIndexOf()  <br>                //从数组末尾向前查找 <br>            </script> <br> <br> <br>        2.String对象 有哪些方法? <br>            <script> <br>                charAt(index)   <br>                // 返回指定字符串位置 <br>                indexOf(searchValue,[fromIndex]) <br>                // 返回searchValue在字符串首次出现的位置 <br>                lastIndexOf(searchValue,[fromIndex])  <br>                // 从后向前查找,返回searchValue在字符串首次出现的位置 <br>                slice(start,[end]) <br>                // 抽取从start(包括start) 开始到 end(不包括end) 结束的所有字符 <br>                substring(start,[stop]) <br>                // 抽取从start开始到stop-1处所有字符串 <br>                substr(start,[length]) <br>                // 抽取从start开始长度为length 的字符串 <br>                split() <br>                // 把一个字符串分割为数组 <br>                toUpperCase() //字符串转成大写 <br>                toLowerCase() //字符串转成小写 <br>                replace() //字符串的替换,只替换第一个 <br>            </script> <br> <br> <br>        3.Date对象 有哪些方法? <br>            <script> <br>                getDate() //返回一个月中某一天(1-31) <br>                getDay() //返回一周中某一天(0-6) <br>                getMont() // 返回月份(0-11) <br>                getFullYear() //返回年份 <br>                getHours() //返回小时 <br>                getMintues() //返回分钟 <br>                getSeconds() //返回秒钟 <br>            </script> <br> <br> <br>        4.Math对象 有哪些方法? <br>            <script> <br>                Math.abs() //返回数字绝对值 <br>                Math.ceil() //对数字向上取整 <br>                Math.floor() //对数字向下取整 <br>                Math.round() // 对数字四舍五入 <br>                Math.random() //返回0-1之间自然数 <br>                Math.min() // 求最小值 <br>                Math.max() //求最大值 <br>                // 生成n-m之间的一个随机整数的方法:    <br>                Math.floor(Math.random()*(m-n+1)+n) <br>            </script> <br> <br> <br>        5.JS基本数据类型有哪些? <br>            1.Number <br>            2.String <br>            3.Boolean <br>            4.Undefined <br>            5.Null <br>            6.Object <br>            7.Symbol ECMAScript 2015 新增(创建后独一无二且不可变的数据类型 ) <br> <br> <br>        6.如何阻止事件冒泡 <br>            <script> <br>                // JavaScript <br>                document.getElementById('btn').addEventListener('click', function (event) { <br>                    event = event || window.event; <br>                    if (event.stopPropagation){ <br>                        // W3C <br>                        event.stopPropagation(); <br>                    } else{ <br>                        // IE <br>                        event.cancelBubble = true; <br>                    } <br>                }, false);  <br>                // jQuery <br>                $('#btn').on('click', function (event) { <br>                    event.stopPropagation(); <br>                }); <br>            </script> <br>         <br>        7.谈谈This对象的理解 <br>            this总是指向函数的直接调用者(而非间接调用者) <br>            如果有new关键字,this指向new出来的那个对象 <br>            在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this总是指向全局对象Window <br> <br> <br>        8.介绍一下原型链, <br>         <br>            每个对象都会在其内部初始化一个属性,就是prototype(原型),当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去prototype里找这个属性,这个prototype又会有自己的prototype,于是就这样一直找下去,也就是我们平时所说的原型链的概念。 <br> <br> <br>            关系:instance.constructor.prototype = instance.__proto__ <br> <br> <br>            特点: <br>                JavaScript对象是通过引用来传递的,我们创建的每个新对象实体中并没有一份属于自己的原型副本。当我们修改原型时,与之相关的对象也会继承这一改变。 <br> <br> <br>              当我们需要一个属性的时,Javascript引擎会先看当前对象中是否有这个属性, 如果没有的话,就会查找他的Prototype对象是否有这个属性,如此递推下去,一直检索到Object 内建对象。 <br> <br> <br> <br> <br>            写一个原型链继承的例子: <br>            <script> <br>                function Func(){} <br>                Func.prototype.name = "Sean"; <br>                Func.prototype.getInfo = function() { <br>                  return this.name; <br>                } <br>                var person = new Func();//现在可以参考var person = Object.create(oldObject); <br>                console.log(person.getInfo());//它拥有了Func的属性和方法 <br>                //"Sean" <br>                console.log(Func.prototype); <br>                // Func { name="Sean", getInfo=function()} <br>            </script> <br> <br> <br> <br> <br>        9.介绍一下promise <br> <br> <br>        10.什么是闭包(closure),为什么要用它? <br> <br> <br>            闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域 <br> <br> <br>            闭包的特性: <br>                函数内再嵌套函数 <br>                内部函数可以引用外层的参数和变量 <br>                参数和变量不会被垃圾回收机制回收 <br> <br> <br>        11.new操作符具体干了什么呢? <br> <br> <br>            创建一个空对象,并且 this 变量引用该对象,同时还继承了该函数的原型 <br>            属性和方法被加入到 this 引用的对象中 <br>            新创建的对象由 this 所引用,并且最后隐式的返回 this <br>            var obj  = {}; <br>            obj.__proto__ = Base.prototype; <br>            Base.call(obj); <br> <br> <br>        12.Ajax 是什么? 如何创建一个Ajax? <br> <br> <br>            ajax的全称:Asynchronous Javascript And XML <br>            异步传输+js+xml <br> <br> <br>            所谓异步,在这里简单地解释就是:向服务器发送请求的时候,我们不必等待结果,而是可以同时做其他的事情,等到有了结果它自己会根据设定进行后续操作,与此同时,页面是不会发生整页刷新的,提高了用户体验 <br> <br> <br>            * 创建XMLHttpRequest对象,也就是创建一个异步调用对象 <br>            * 建一个新的HTTP请求,并指定该HTTP请求的方法、URL及验证信息 <br>            * 设置响应HTTP请求状态变化的函数 <br>            * 发送HTTP请求 <br>            * 获取异步调用返回的数据 <br>            * 用JavaScript和DOM实现局部刷新 <br> <br> <br>            同步和异步的区别? <br> <br> <br>            * 同步:浏览器访问服务器请求,用户看得到页面刷新,重新发请求,等请求完,页面刷新,新内容出现,用户看到新内容,进行下一步操作 <br> <br> <br>            * 异步:浏览器访问服务器请求,用户正常操作,浏览器后端进行请求。等请求完,页面不刷新,新内容也会出现,用户看到新内容 <br> <br> <br>        13.事件的各个阶段 <br>            捕获阶段 ---> 2:目标阶段 ---> 3:冒泡阶段 <br>            document   ---> target目标 ----> document <br> <br> <br>            由此,addEventListener的第三个参数设置为true和false的区别已经非常清晰了: <br>               * true表示该元素在事件的“捕获阶段”(由外往内传递时)响应事件; <br>               * false表示该元素在事件的“冒泡阶段”(由内向外传递时)响应事件。 <br> <br> <br>        14.JS判断设备来源 <br>            <script> <br>                function deviceType(){ <br>                    var ua = navigator.userAgent; <br>                    var agent = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];     <br>                    for(var i=0; i<len,len = agent.length; i++){ <br>                        if(ua.indexOf(agent[i])>0){          <br>                            break; <br>                        } <br>                    } <br>                } <br>                deviceType(); <br>                window.addEventListener('resize', function(){ <br>                    deviceType(); <br>                }) <br> <br> <br>                // 微信的 有些不太一样 <br>                function isWeixin(){ <br>                    var ua = navigator.userAgent.toLowerCase(); <br>                    if(ua.match(/MicroMessenger/i)=='micromessenger'){ <br>                        return true; <br>                    }else{ <br>                        return false; <br>                    } <br>                } <br>            </script> <br> <br> <br>        15.介绍JS有哪些内置对象? <br> <br> <br>            * 数据封装类对象:Object、Array、Boolean、Number、String <br>            * 其他对象:Function、Arguments、Math、Date、RegExp、Error <br>            * ES6新增对象:Symbol、Map、Set、Promises、Proxy、Reflect <br> <br> <br>        16.三种强制类型转换、两种隐式类型转换 <br> <br> <br>        17.如何判断一个对象是否为数组? <br> <br> <br>            (1)Object.prototype.toString().call(obj) === ‘[Object Array]’; <br> <br> <br>            (2)Array.isArray(obj); <br> <br> <br>        18.Promise中的执行顺序(考察频率:高) <br> <br> <br>            参考阮一峰老师书中的例子: <br>            <script> <br>                let promise = new Promise(function(resolve, reject) { <br>                  console.log('Promise'); <br>                  resolve(); <br>                }); <br> <br> <br>                promise.then(function() { <br>                  console.log('resolved.'); <br>                }); <br> <br> <br>                console.log('Hi!'); <br>            // Promise <br>            // Hi! <br>            // resolved <br>            </script> <br> <br> <br>            上面代码中,Promise 新建后立即执行,所以首先输出的是Promise。然后,then方法指定的回调函数,将在当前脚本所有同步任务执行完才会执行,所以resolved最后输出。 <br> <br> <br>        19.说几条写JavaScript的基本规范? <br> <br> <br>             1.不要在同一行声明多个变量。 <br>             2.请使用 ===/!==来比较true/false或者数值 <br>             3.使用对象字面量替代new Array这种形式 <br>             4.不要使用全局函数。 <br>             5.Switch语句必须带有default分支 <br>             6.函数不应该有时候有返回值,有时候没有返回值。 <br>             7.For循环必须使用大括号 <br>             8.If语句必须使用大括号 <br>             9.for-in循环中的变量 应该使用var关键字明确限定作用域,从而避免作用域污染。 <br> <br> <br>             <br>        20.Javascript如何实现继承? <br> <br> <br>            1、构造继承 <br>            2、原型继承 <br>            3、实例继承 <br>            4、拷贝继承 <br>            <script> <br>                // 原型prototype机制或apply和call方法去实现较简单,建议使用构造函数与原型混合方式。 <br>                function Parent(){ <br>                    this.name = 'wang'; <br>                } <br>                function Child(){ <br>                    this.age = 28; <br>                } <br>                Child.prototype = new Parent();//继承了Parent,通过原型 <br> <br> <br>                var demo = new Child(); <br>                alert(demo.age); <br>                alert(demo.name);//得到被继承的属性 <br>            </script> <br> <br> <br>        21.javascript创建对象的几种方式? <br> <br> <br>            javascript创建对象简单的说,无非就是使用内置对象或各种自定义对象,当然还可以用JSON;但写法有很多种,也能混合使用。 <br> <br> <br>             1、对象字面量的方式 <br>                <script>         <br>                person={firstname:"Mark",lastname:"Yun",age:25,eyecolor:"black"}; <br>                </script> <br> <br> <br>             2、用function来模拟无参的构造函数 <br>                <script>    <br>                    function Person(){} <br>                    var person=new Person();//定义一个function,如果使用new"实例化",该function可以看作是一个Class <br>                    person.name="Mark"; <br>                    person.age="25"; <br>                    person.work=function(){ <br>                    alert(person.name+" hello..."); <br>                    } <br>                    person.work(); <br>                </script> <br> <br> <br>             3、用function来模拟参构造函数来实现(用this关键字定义构造的上下文属性) <br>                <script> <br>                    function Pet(name,age,hobby){ <br>                       this.name=name;//this作用域:当前对象 <br>                       this.age=age; <br>                       this.hobby=hobby; <br>                       this.eat=function(){ <br>                          alert("我叫"+this.name+",我喜欢"+this.hobby+",是个程序员"); <br>                       } <br>                    } <br>                    var maidou =new Pet("麦兜",25,"coding");//实例化、创建对象 <br>                    maidou.eat();//调用eat方法 <br>                </script> <br> <br> <br>             4、用工厂方式来创建(内置对象) <br>                <script> <br>                     var wcDog =new Object(); <br>                     wcDog.name="旺财"; <br>                     wcDog.age=3; <br>                     wcDog.work=function(){ <br>                       alert("我是"+wcDog.name+",汪汪汪......"); <br>                     } <br>                     wcDog.work(); <br>                </script> <br> <br> <br>             5、用原型方式来创建 <br>                <script> <br>                    function Dog(){ <br> <br> <br>                     } <br>                     Dog.prototype.name="旺财"; <br>                     Dog.prototype.eat=function(){ <br>                     alert(this.name+"是个吃货"); <br>                     } <br>                     var wangcai =new Dog(); <br>                     wangcai.eat(); <br>                 </script> <br> <br> <br>             5、用混合方式来创建 <br>                <script> <br>                    function Car(name,price){ <br>                      this.name=name; <br>                      this.price=price; <br>                    } <br>                     Car.prototype.sell=function(){ <br>                       alert("我是"+this.name+",我现在卖"+this.price+"万元"); <br>                      } <br>                    var camry =new Car("凯美瑞",27); <br>                    camry.sell(); <br>                </script> <br> <br> <br>        22.javascript 代码中的"use strict";是什么意思 ? 使用它区别是什么? <br> <br> <br>            use strict是一种ECMAscript 5 添加的(严格)运行模式,这种模式使得 Javascript 在更严格的条件下运行, <br> <br> <br>            * 使JS编码更加规范化的模式,消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为。 <br>            * 默认支持的糟糕特性都会被禁用,比如不能用with,也不能在意外的情况下给全局变量赋值; <br>            * 全局变量的显示声明,函数必须声明在顶层,不允许在非函数代码块内声明函数,arguments.callee也不允许使用; <br>            * 消除代码运行的一些不安全之处,保证代码运行的安全,限制函数中的arguments修改,严格模式下的eval函数的行为和非严格模式的也不相同; <br> <br> <br>            * 提高编译器效率,增加运行速度; <br>            * 为未来新版本的Javascript标准化做铺垫。     <br> <br> <br>        23.DOM操作——怎样添加、移除、移动、复制、创建和查找节点? <br>            1)创建新节点 <br>                createDocumentFragment()    //创建一个DOM片段 <br>                createElement()   //创建一个具体的元素 <br>                createTextNode()   //创建一个文本节点 <br> <br> <br>          (2)添加、移除、替换、插入 <br>                appendChild() <br>                removeChild() <br>                replaceChild() <br>                insertBefore() //在已有的子节点前插入一个新的子节点 <br> <br> <br>          (3)查找 <br>                getElementsByTagName()    //通过标签名称 <br>                getElementsByName()    //通过元素的Name属性的值(IE容错能力较强,会得到一个数组,其中包括id等于name值的) <br>                getElementById()    //通过元素Id,唯一性 <br> <br> <br>        24 .call() 和 .apply() 的区别? <br> <br> <br>        26.说一下对变量提升的理解 <br> <br> <br>        27.说明 this 几种不同使用场景 <br> <br> <br>        28.如何理解作用域 <br> <br> <br>        29.实际开发中闭包的应用 <br> <br> <br> <br> <br> <br> <br> <br> <br>     (五)JS编程题 <br>        1.字符串去重方法 <br>            <script> <br>                function quchongstr(str){ <br>                    var a = str.match(/\S+/g); <br>                    //等价于str.split(/\s+/g) //  \s空白符,\S非空白符 <br>                    a.sort(); <br>                    for(var i=a.length-1;i>0;i--){ <br>                        if(a[i]==a[i-1]){ <br>                            a.splice(i,1); <br>                        } <br>                    } <br>                    return a.join(" "); <br>                } <br>                var str = quchongstr("a a b a b e"); <br>                console.log(str); <br>            </script> <br> <br> <br> <br> <br>        2.数组去重方法(手写,最好使用ES6) <br>            <script>  <br>                // 方法一 ES6 set() <br>                var a = [2,"12",2,12,1,2,1,6,12,13,6], <br>                    b= [...new Set(a)]; //ES6新增set 方法 <br>                    console.log(b); <br> <br> <br>                // 方法二 for循环遍历 <br>                function quchong(arr){ <br>                     var len = arr.length; <br>                     arr.sort(); <br>                     for(var i=len-1;i>0;i--){ <br>                         if(arr[i]==arr[i-1]){ <br>                             arr.splice(i,1); <br>                         } <br>                     } <br>                     return arr; <br>                } <br>                var a = ["a","a","b",'b','c','c','a','d']; <br>                var b = quchong(a); <br>                console.log(b); <br>            </script> <br> <br> <br>        3.最快捷求数组最大值最小值方法  <br>            <script> <br>                var a=[1,2,3,5]; <br>                alert(Math.max.apply(null, a));//最大值 <br>                alert(Math.min.apply(null, a));//最小值 <br>            </script> <br> <br> <br>        4.完成以下代码段,实现a数组对b数组的拷贝,方法越多越好 <br>            var a=[1,"yes","3"], <br>                b; <br>            <script type="text/javascript"> <br>                var a=[1,"yes","3"], <br>                b; <br>                //方法一: for遍历 push <br>                var b = new Array(); <br>                for (var i = 0; i < a.length; i++) { <br>                    b.push(a[i]); <br>                } <br>                console.log(b); <br> <br> <br>                // 方法二 空数组concat <br>                b=[].concat(a); <br>                console.log(b) <br> <br> <br>                // 方法三:slice() <br>                b=a.slice(0); <br>                console.log(b) <br>            </script> <br> <br> <br>        5.输出今天日期: <br>            <script type="text/javascript"> <br>                var calculateDate = function(){ <br>                    var date = new Date(); <br>                    var weeks = ["日","一","二","三","四","五","六"]; <br>                    return date.getFullYear()+"年"+(date.getMonth()+1)+"月"+ <br>                    date.getDate()+"日 星期"+weeks[date.getDay()]; <br>                } <br>                $(function(){ <br>                    $("#dateSpan").html(calculateDate()); <br>                 }); <br>            </script> <br> <br> <br>        6.封装一个转驼峰形式的函数 <br>            border-left-color 转 borderLeftColor <br>            <script> <br>                function camelback(str){ <br>                    var arr = str.split('-'); <br>                    for (var i = 0; i < arr.length; i++) { <br>                        arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substr(1); <br>                    } <br>                    str = arr.join(''); <br>                    return str; <br>                }·· <br>                var camelFormat=camelback("border-left-color"); <br>                console.log(camelFormat); <br>            </script> <br> <br> <br>        7.随机输出0-100中的10个数字,放入一个数组,并排序 <br>            <script> <br>                var iArray = []; <br>                function getRandom(istart, iend){ <br>                    var iChoice = -(istart - iend +1); <br>                    return Math.floor(Math.random() * iChoice + istart); <br>                    //Math.floor()是向下取整 <br>                } <br>                for(var i=0; i<10; i++){ <br>                    iArray.push(getRandom(10,100));//循环十次该方法然后push到空数组中 <br>                } <br>                iArray.sort();//排序 <br>                console.log(iArray); <br>            </script> <br> <br> <br>        8.实现两个数组相加,并排序 <br>  <br>        9.添加千位分隔符 <br>            123456789 转为 123,456,789 <br>            <script> <br>                function commafy(num) { <br>                    return num && num <br>                    .toString() <br>                    .replace(/(\d)(?=(\d{3})+\.)/g, function($0, $1) { <br>                        return $1 + ","; <br>                    }); <br>                } <br>                console.log(commafy(1234567.90)); //1,234,567.90 <br>            </script> <br> <br> <br>        10.快速的让一个数组乱序 <br>            <script> <br>                var arr = [1,2,3,4,5,6,7,8,9]; <br>                arr.sort(function(){ <br>                    return Math.random() > 0.5 ? -1:1; <br>                }) <br>                console.log(arr); <br>            </script> <br> <br> <br>        11.求数组前10个元素之和 <br>            <script> <br>                var arr = [1,2,3,4,5,6,7,8,9,10,11,12], <br>                r = arr.slice(0,10).reduce(function(x,y){ <br>                return x+y; <br>                }); <br>                console.log(r); <br>            </script> <br> <br> <br> <br> <br>        12.查找一个字符串中出现次数最多的字符,统计这个次数 <br>            <script> <br>                // 字符串可以用单引号,也可以用双引号 <br>                var str = 'ajfewiqnnfsdajfdajfdkakfjkdsfjds'; <br>                var obj = {}; <br>                // 处理字符串字符,给对象做属性用 <br>                for(var i=0;i<str.length;i++){ <br>                    // 中括号调用,数组是下标,对象是属性,obj.name 和 obj['name'] <br>                    if(obj[str.charAt(i)]){ <br>                        // 如果对象有这个属性了,就给这个属性值自增1 <br>                        obj[str.charAt(i)]++; <br>                    }else{ <br>                        // 如果对象没有这个属性,就给这个属性值设为1 <br>                        obj[str.charAt(i)] = 1; <br>                    } <br>                } <br>                // 找出对象属性中最多次数 <br>                var times = 0; <br>                var value = ''; <br>                // for in 是另一种for循环,可以用于遍历对象的属性和方法 <br>                for(var i in obj){ <br>                    if(obj[i]>times){ <br>                        times = obj[i]; <br>                        value = i; <br>                    } <br>                } <br>                // 最多次数保存在times中了,字符保存在value中了 <br>            </script> <br> <br> <br>        13.找出数组最大值可以有哪些方法? <br>            <script> <br>                var ary = [1,25,16,32,43,26,13,28,19]; <br>                // 1、 for循环遍历,比较low,就不写了 <br>                // 2、 数组排序 <br>                ary.sort()[ary.length-1]; <br>                // 3、数组排序+截取 <br>                ary.sort().splice(-1)[0]; <br>                // 4、借用Math最大值方法 <br>                Math.max.apply(null,ary); <br>            </script> <br> <br> <br>        14.创建10个a标签,点击时候弹出对应的序号 <br>            <script> <br>                var i; <br>                for(i=0; i<10; i++){ <br>                    (function(i){ <br>                        a =document.creatElement('a'); <br>                        a.innnerHTML = i + '<br>' <br>                        a.addEventListenter('click',function(e){ <br>                            e.preventDefault(); <br>                            alert(i); <br>                        }); <br>                        document.body.appedChild(a); <br>                    })(i); <br>                } <br>            </script> <br>         <br>        15.生成1-10之间10个随机数,并且不重复 <br>            <script> <br>                function getRandomArray(){ <br>                    var array = []; <br>                    while (array.length < 10) <br>                    { <br>                        var random = Math.floor(Math.random() * 10) + 1; <br>                        if (array.indexOf(random) < 0) <br>                        { <br>                            array.push(random); <br>                        } <br>                    } <br>                    return array; <br>                } <br>            </script> <br> <br> <br> <br> <br>     (五) React部分: <br>        1.介绍一下 React  <br> <br> <br>        2. React生命周期有哪些? <br> <br> <br>            渲染过程调用到的生命周期函数,主要几个要知道; <br>                * constructor
 <br>                * getInitialState
 <br>                * getDefaultProps
 <br>                * componentWillMount
 <br>                * render
 <br>                * componentDidMount
 <br> <br> <br>            更新过程 <br>                * componentWillReceiveProps
 <br>                * shouldComponentUpdate
 <br>                * componentWillUpdate
 <br>                * render
 <br>                * componentDidUpdate
 <br> <br> <br>            卸载过程 <br>                componentWillUnmount <br> <br> <br>        3.React props属性和state属性有什么区别? <br> <br> <br>    (六) Webpack部分: <br> <br> <br>         1.Webpack 有哪些命令? <br> <br> <br>            webpack <br> <br> <br>         2.webpack 有哪些配置 ? <br> <br> <br>         3.webpack.config.js 文件各代表什么? <br> <br> <br> <br> <br>         4.配置淘宝源 <br>            npm install -g cnpm --registry=https://registry.npm.taobao.org <br> <br> <br>             <br> <br> <br>     (七) git部分: <br> <br> <br>        1.git 常用命令有哪些? <br>             <br>            (一) 创建与合并分支 <br> <br> <br>                远程项目拉到本地:  <br>                    git clone  <br> <br> <br>                从master分支创建dev分支并切换到dev分支: <br>                    git checkout master <br>                    git checkout -b dev <br> <br> <br>                        其中 git checkout -b dev 等价于: <br>                        (git branch dev <br>                         git checkout dev <br>                        ) <br> <br> <br>                查看本地当前分支 <br>                    git branch <br> <br> <br>                查看远程全部分支 <br>                    git branch -a <br> <br> <br>                修改代码,跟踪文件 <br>                    git add a.html <br> <br> <br>                提交代码 <br>                    git commit -m "提交文件a.html" <br> <br> <br>                分支合并,将dev分支合并到master <br>                    git checkout master <br>                    git merge dev <br> <br> <br>                合并完成后,删除dev分支 <br>                    git branch -d dev <br> <br> <br>            (二)解决代码冲突 <br> <br> <br>            (三)Bug 分支 <br> <br> <br>            (四)版本回退 <br> <br> <br>                回退至上一个版本 <br>                    git reset --hard HEAD <br> <br> <br>                回退至指定版本 <br>                    git reset --hard 版本号 <br> <br> <br>                查看以往版本号(本地commit) <br>                    git reflog <br> <br> <br>                查看以往版本号及信息(所有commit) <br>                    git log <br> <br> <br>            (五) 撤销修改 <br> <br> <br> <br> <br>             <br>            git state <br> <br> <br>        2.如何解决代码冲突? <br>        https://www.cnblogs.com/VVingerfly/p/6392770.html <br> <br> <br>    (八)ES6部分: <br>        1.let var const 有什么区别? <br> <br> <br>            let 允许你声明一个作用域被限制在块级中的变量、语句或者表达式 <br>                let绑定不受变量提升的约束,这意味着let声明不会被提升到当前 <br>                该变量处于从块开始到初始化处理的“暂存死区”。 <br> <br> <br>            var 声明变量的作用域限制在其声明位置的上下文中,而非声明变量总是全局的 <br>                由于变量声明(以及其他声明)总是在任意代码执行之前处理的,所以在代码中的任意位置声明变量总是等效于在代码开头声明 <br>                 <br>            const 声明创建一个值的只读引用 (即指针) <br>                这里就要介绍下 JS 常用类型  <br>                String、Number、Boolean、Array、Object、Null、Undefined <br>                其中基本类型 有 Undefined、Null、Boolean、Number、String,保存在栈中; <br>                复合类型 有 Array、Object ,保存在堆中; <br>                 <br>                基本数据当值发生改变时,那么其对应的指针也将发生改变,故造成 const申明基本数据类型时, <br>                再将其值改变时,将会造成报错, 例如 const a = 3 ; a = 5 时 将会报错; <br>                但是如果是复合类型时,如果只改变复合类型的其中某个Value项时, 将还是正常使用; <br> <br> <br>        2.什么是箭头函数 <br> <br> <br>            语法比函数表达式更短,并且不绑定自己的this,arguments,super或 new.target。这些函数表达式最适合用于非方法函数,并且它们不能用作构造函数。 <br> <br> <br> <br> <br>    (九)jQuery基础: <br> <br> <br>        1.jQuery对象与DOM对象之间的转换 <br>            * 从 DOM 对象转到 jQuery 对象: $(obj) <br>            * 从 jQuery 对象转到 DOM 对象: obj[0] 或 get() 方法 <br>         <br>     <br> <br> <br>    (十) npm 部分: <br>        1.npm常用命令: <br> <br> <br>            npm init 项目初始化,创建 package.json <br>                npm init --yes  <br> <br> <br>            npm install 依赖包安装 <br> <br> <br>                npm install express   #本地安装 <br> <br> <br>                npm install express -g #全局安装 <br> <br> <br>            npm update <br> <br> <br>            npm uninstall <br> <br> <br>                dependencies(生产环境依赖) <br> <br> <br>                devDependencies(本地开发环境依赖,不会发布到生产环境) <br> <br> <br>            npm ls -g: 列出所有全局安装npm 包 <br> <br> <br> <br> <br> <br> <br>    ()其他 : <br>        1.CommonJS AMD CMD ES6 模块化的方法 <br> <br> <br>            CommonJS <br>                该规范的核心思想是允许模块通过 require 方法来同步加载所要依赖的其他模块,然后通过 exports 或 module.exports 来导出需要暴露的接口 <br> <br> <br>                require("module"); <br>                require("../file.js"); <br>                exports.doStuff = function() {}; <br>                module.exports = someValue; <br>                 <br>                优点: <br>                服务器端模块便于重用 <br>                NPM 中已经有将近20万个可以使用模块包 <br>                简单并容易使用 <br> <br> <br>                缺点: <br>                同步的模块加载方式不适合在浏览器环境中,同步意味着阻塞加载,浏览器资源是异步加载的 <br>                不能非阻塞的并行加载多个模块 <br> <br> <br>                实现: <br>                服务器端的 Node.js <br>                Browserify,浏览器端的 CommonJS 实现,可以使用 NPM 的模块,但是编译打包后的文件体积可能很大 </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1600200943343796224"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(前端面试,面试题,html,css,javascript)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1835509897106649088.htm" title="Long类型前后端数据不一致" target="_blank">Long类型前后端数据不一致</a> <span class="text-muted">igotyback</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>响应给前端的数据浏览器控制台中response中看到的Long类型的数据是正常的到前端数据不一致前后端数据类型不匹配是一个常见问题,尤其是当后端使用Java的Long类型(64位)与前端JavaScript的Number类型(最大安全整数为2^53-1,即16位)进行数据交互时,很容易出现精度丢失的问题。这是因为JavaScript中的Number类型无法安全地表示超过16位的整数。为了解决这个问</div> </li> <li><a href="/article/1835509770287673344.htm" title="swagger访问路径" target="_blank">swagger访问路径</a> <span class="text-muted">igotyback</span> <a class="tag" taget="_blank" href="/search/swagger/1.htm">swagger</a> <div>Swagger2.x版本访问地址:http://{ip}:{port}/{context-path}/swagger-ui.html{ip}是你的服务器IP地址。{port}是你的应用服务端口,通常为8080。{context-path}是你的应用上下文路径,如果应用部署在根路径下,则为空。Swagger3.x版本对于Swagger3.x版本(也称为OpenAPI3)访问地址:http://{ip</div> </li> <li><a href="/article/1835508130608410624.htm" title="html 中如何使用 uniapp 的部分方法" target="_blank">html 中如何使用 uniapp 的部分方法</a> <span class="text-muted">某公司摸鱼前端</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/uni-app/1.htm">uni-app</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>示例代码:Documentconsole.log(window);效果展示:好了,现在就可以uni.使用相关的方法了</div> </li> <li><a href="/article/1835499615491813376.htm" title="四章-32-点要素的聚合" target="_blank">四章-32-点要素的聚合</a> <span class="text-muted">彩云飘过</span> <div>本文基于腾讯课堂老胡的课《跟我学Openlayers--基础实例详解》做的学习笔记,使用的openlayers5.3.xapi。源码见1032.html,对应的官网示例https://openlayers.org/en/latest/examples/cluster.htmlhttps://openlayers.org/en/latest/examples/earthquake-clusters.</div> </li> <li><a href="/article/1835498925755297792.htm" title="DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理" target="_blank">DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理</a> <span class="text-muted">STU学生网页设计</span> <a class="tag" taget="_blank" href="/search/%E7%BD%91%E9%A1%B5%E8%AE%BE%E8%AE%A1/1.htm">网页设计</a><a class="tag" taget="_blank" href="/search/%E6%9C%9F%E6%9C%AB%E7%BD%91%E9%A1%B5%E4%BD%9C%E4%B8%9A/1.htm">期末网页作业</a><a class="tag" taget="_blank" href="/search/html%E9%9D%99%E6%80%81%E7%BD%91%E9%A1%B5/1.htm">html静态网页</a><a class="tag" taget="_blank" href="/search/html5%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">html5期末大作业</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E9%A1%B5%E8%AE%BE%E8%AE%A1/1.htm">网页设计</a><a class="tag" taget="_blank" href="/search/web%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web大作业</a> <div>️精彩专栏推荐作者主页:【进入主页—获取更多源码】web前端期末大作业:【HTML5网页期末作业(1000套)】程序员有趣的告白方式:【HTML七夕情人节表白网页制作(110套)】文章目录二、网站介绍三、网站效果▶️1.视频演示2.图片演示四、网站代码HTML结构代码CSS样式代码五、更多源码二、网站介绍网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程</div> </li> <li><a href="/article/1835496149843275776.htm" title="关于城市旅游的HTML网页设计——(旅游风景云南 5页)HTML+CSS+JavaScript" target="_blank">关于城市旅游的HTML网页设计——(旅游风景云南 5页)HTML+CSS+JavaScript</a> <span class="text-muted">二挡起步</span> <a class="tag" taget="_blank" href="/search/web%E5%89%8D%E7%AB%AF%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web前端期末大作业</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E6%97%85%E6%B8%B8/1.htm">旅游</a><a class="tag" taget="_blank" href="/search/%E9%A3%8E%E6%99%AF/1.htm">风景</a> <div>⛵源码获取文末联系✈Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业|游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作|HTML期末大学生网页设计作业,Web大学生网页HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScrip</div> </li> <li><a href="/article/1835496148601761792.htm" title="HTML网页设计制作大作业(div+css) 云南我的家乡旅游景点 带文字滚动" target="_blank">HTML网页设计制作大作业(div+css) 云南我的家乡旅游景点 带文字滚动</a> <span class="text-muted">二挡起步</span> <a class="tag" taget="_blank" href="/search/web%E5%89%8D%E7%AB%AF%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web前端期末大作业</a><a class="tag" taget="_blank" href="/search/web%E8%AE%BE%E8%AE%A1%E7%BD%91%E9%A1%B5%E8%A7%84%E5%88%92%E4%B8%8E%E8%AE%BE%E8%AE%A1/1.htm">web设计网页规划与设计</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/dreamweaver/1.htm">dreamweaver</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作HTML期末大学生网页设计作业HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScript:做与用户的交互行为文章目录前端学习路线</div> </li> <li><a href="/article/1835495517774245888.htm" title="python八股文面试题分享及解析(1)" target="_blank">python八股文面试题分享及解析(1)</a> <span class="text-muted">Shawn________</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>#1.'''a=1b=2不用中间变量交换a和b'''#1.a=1b=2a,b=b,aprint(a)print(b)结果:21#2.ll=[]foriinrange(3):ll.append({'num':i})print(11)结果:#[{'num':0},{'num':1},{'num':2}]#3.kk=[]a={'num':0}foriinrange(3):#0,12#可变类型,不仅仅改变</div> </li> <li><a href="/article/1835493753557708800.htm" title="每日算法&面试题,大厂特训二十八天——第二十天(树)" target="_blank">每日算法&面试题,大厂特训二十八天——第二十天(树)</a> <span class="text-muted">肥学</span> <a class="tag" taget="_blank" href="/search/%E2%9A%A1%E7%AE%97%E6%B3%95%E9%A2%98%E2%9A%A1%E9%9D%A2%E8%AF%95%E9%A2%98%E6%AF%8F%E6%97%A5%E7%B2%BE%E8%BF%9B/1.htm">⚡算法题⚡面试题每日精进</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>目录标题导读算法特训二十八天面试题点击直接资料领取导读肥友们为了更好的去帮助新同学适应算法和面试题,最近我们开始进行专项突击一步一步来。上一期我们完成了动态规划二十一天现在我们进行下一项对各类算法进行二十八天的一个小总结。还在等什么快来一起肥学进行二十八天挑战吧!!特别介绍小白练手专栏,适合刚入手的新人欢迎订阅编程小白进阶python有趣练手项目里面包括了像《机器人尬聊》《恶搞程序》这样的有趣文章</div> </li> <li><a href="/article/1835493267907637248.htm" title="webpack图片等资源的处理" target="_blank">webpack图片等资源的处理</a> <span class="text-muted">dmengmeng</span> <div>需要的loaderfile-loader(让我们可以引入这些资源文件)url-loader(其实是file-loader的二次封装)img-loader(处理图片所需要的)在没有使用任何处理图片的loader之前,比如说css中用到了背景图片,那么最后打包会报错的,因为他没办法处理图片。其实你只想能够使用图片的话。只加一个file-loader就可以,打开网页能准确看到图片。{test:/\.(p</div> </li> <li><a href="/article/1835492740536823808.htm" title="node.js学习" target="_blank">node.js学习</a> <span class="text-muted">小猿L</span> <a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/vim/1.htm">vim</a> <div>node.js学习实操及笔记温故node.js,node.js学习实操过程及笔记~node.js学习视频node.js官网node.js中文网实操笔记githubcsdn笔记为什么学node.js可以让别人访问我们编写的网页为后续的框架学习打下基础,三大框架vuereactangular离不开node.jsnode.js是什么官网:node.js是一个开源的、跨平台的运行JavaScript的运行</div> </li> <li><a href="/article/1835469672334585856.htm" title="Java企业面试题3" target="_blank">Java企业面试题3</a> <span class="text-muted">马龙强_</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>1.break和continue的作用(智*图)break:用于完全退出一个循环(如for,while)或一个switch语句。当在循环体内遇到break语句时,程序会立即跳出当前循环体,继续执行循环之后的代码。continue:用于跳过当前循环体中剩余的部分,并开始下一次循环。如果是在for循环中使用continue,则会直接进行条件判断以决定是否执行下一轮循环。2.if分支语句和switch分</div> </li> <li><a href="/article/1835464504918503424.htm" title="Java面试题精选:消息队列(二)" target="_blank">Java面试题精选:消息队列(二)</a> <span class="text-muted">芒果不是芒</span> <a class="tag" taget="_blank" href="/search/Java%E9%9D%A2%E8%AF%95%E9%A2%98%E7%B2%BE%E9%80%89/1.htm">Java面试题精选</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a> <div>一、Kafka的特性1.消息持久化:消息存储在磁盘,所以消息不会丢失2.高吞吐量:可以轻松实现单机百万级别的并发3.扩展性:扩展性强,还是动态扩展4.多客户端支持:支持多种语言(Java、C、C++、GO、)5.KafkaStreams(一个天生的流处理):在双十一或者销售大屏就会用到这种流处理。使用KafkaStreams可以快速的把销售额统计出来6.安全机制:Kafka进行生产或者消费的时候会</div> </li> <li><a href="/article/1835448239864770560.htm" title="JavaScript 中,深拷贝(Deep Copy)和浅拷贝(Shallow Copy)" target="_blank">JavaScript 中,深拷贝(Deep Copy)和浅拷贝(Shallow Copy)</a> <span class="text-muted">跳房子的前端</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95/1.htm">前端面试</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a> <div>在JavaScript中,深拷贝(DeepCopy)和浅拷贝(ShallowCopy)是用于复制对象或数组的两种不同方法。了解它们的区别和应用场景对于避免潜在的bugs和高效地处理数据非常重要。以下是对深拷贝和浅拷贝的详细解释,包括它们的概念、用途、优缺点以及实现方式。1.浅拷贝(ShallowCopy)概念定义:浅拷贝是指创建一个新的对象或数组,其中包含了原对象或数组的基本数据类型的值和对引用数</div> </li> <li><a href="/article/1835435506645692416.htm" title="00. 这里整理了最全的爬虫框架(Java + Python)" target="_blank">00. 这里整理了最全的爬虫框架(Java + Python)</a> <span class="text-muted">有一只柴犬</span> <a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB%E7%B3%BB%E5%88%97/1.htm">爬虫系列</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>目录1、前言2、什么是网络爬虫3、常见的爬虫框架3.1、java框架3.1.1、WebMagic3.1.2、Jsoup3.1.3、HttpClient3.1.4、Crawler4j3.1.5、HtmlUnit3.1.6、Selenium3.2、Python框架3.2.1、Scrapy3.2.2、BeautifulSoup+Requests3.2.3、Selenium3.2.4、PyQuery3.2</div> </li> <li><a href="/article/1835435141535723520.htm" title="详解:如何设计出健壮的秒杀系统?" target="_blank">详解:如何设计出健壮的秒杀系统?</a> <span class="text-muted">夜空_2cd3</span> <div>作者:Yrion博客园:cnblogs.com/wyq178/p/11261711.html前言:秒杀系统相信很多人见过,比如京东或者淘宝的秒杀,小米手机的秒杀。那么秒杀系统的后台是如何实现的呢?我们如何设计一个秒杀系统呢?对于秒杀系统应该考虑哪些问题?如何设计出健壮的秒杀系统?本期我们就来探讨一下这个问题:image目录一:****秒杀系统应该考虑的问题二:****秒杀系统的设计和技术方案三:*</div> </li> <li><a href="/article/1835428948339683328.htm" title="JavaScript `Map` 和 `WeakMap`详细解释" target="_blank">JavaScript `Map` 和 `WeakMap`详细解释</a> <span class="text-muted">跳房子的前端</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/%E5%8E%9F%E7%94%9F%E6%96%B9%E6%B3%95/1.htm">原生方法</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>在JavaScript中,Map和WeakMap都是用于存储键值对的数据结构,但它们有一些关键的不同之处。MapMap是一种可以存储任意类型的键值对的集合。它保持了键值对的插入顺序,并且可以通过键快速查找对应的值。Map提供了一些非常有用的方法和属性来操作这些数据对:set(key,value):将一个键值对添加到Map中。如果键已经存在,则更新其对应的值。get(key):获取指定键的值。如果键</div> </li> <li><a href="/article/1835419870070665216.htm" title="切换淘宝最新npm镜像源是" target="_blank">切换淘宝最新npm镜像源是</a> <span class="text-muted">hai40587</span> <a class="tag" taget="_blank" href="/search/npm/1.htm">npm</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a> <div>切换淘宝最新npm镜像源是一个相对简单的过程,但首先需要明确当前淘宝npm镜像源的状态和最新的镜像地址。由于网络环境和服务更新,镜像源的具体地址可能会发生变化,因此,我将基于当前可获取的信息,提供一个通用的切换步骤,并附上最新的镜像地址(截至回答时)。一、了解npm镜像源npm(NodePackageManager)是JavaScript的包管理器,用于安装、更新和管理项目依赖。由于npm官方仓库</div> </li> <li><a href="/article/1835413064636264448.htm" title="Day_11" target="_blank">Day_11</a> <span class="text-muted">ROC_bird..</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>面试题16.15.珠玑妙算-力扣(LeetCode)/***Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*///下标和对应位置的值都一样,answer[0]+1,对应位置的值猜对了,但是下标不对,answer[1]+1int*masterMind(char*solution,char*guess,int*returnSiz</div> </li> <li><a href="/article/1835403246865313792.htm" title="斟一小组鸡血视频" target="_blank">斟一小组鸡血视频</a> <span class="text-muted">和自己一起成长</span> <div>http://m.v.qq.com/play/play.html?coverid=&vid=c0518henl2a&ptag=2_6.0.0.14297_copy有一种努力叫做靠自己http://m.v.qq.com/play/play.html?coverid=&vid=i0547o426g4&ptag=2_6.0.0.14297_copy世界最励志短片https://v.qq.com/x/pa</div> </li> <li><a href="/article/1835395039572881408.htm" title="Dockerfile命令详解之 FROM" target="_blank">Dockerfile命令详解之 FROM</a> <span class="text-muted">清风怎不知意</span> <a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8%E5%8C%96/1.htm">容器化</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>许多同学不知道Dockerfile应该如何写,不清楚Dockerfile中的指令分别有什么意义,能达到什么样的目的,接下来我将在容器化专栏中详细的为大家解释每一个指令的含义以及用法。专栏订阅传送门https://blog.csdn.net/qq_38220908/category_11989778.html指令不区分大小写。但是,按照惯例,它们应该是大写的,以便更容易地将它们与参数区分开来。(引用</div> </li> <li><a href="/article/1835389111658180608.htm" title="《HTML 与 CSS—— 响应式设计》" target="_blank">《HTML 与 CSS—— 响应式设计》</a> <span class="text-muted">陈在天box</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>一、引言在当今数字化时代,人们使用各种不同的设备访问互联网,包括智能手机、平板电脑、笔记本电脑和台式机等。为了确保网站在不同设备上都能提供良好的用户体验,响应式设计成为了网页开发的关键。HTML和CSS作为网页开发的基础技术,在实现响应式设计方面发挥着重要作用。本文将深入探讨HTML与CSS中的响应式设计原理、方法和最佳实践。二、响应式设计的概念与重要性(一)概念响应式设计是一种网页设计方法,旨在</div> </li> <li><a href="/article/1835387977480630272.htm" title="【C语言】- 自定义类型:结构体、枚举、联合" target="_blank">【C语言】- 自定义类型:结构体、枚举、联合</a> <span class="text-muted">Cavalier_01</span> <a class="tag" taget="_blank" href="/search/C%E8%AF%AD%E8%A8%80/1.htm">C语言</a> <div>【C语言】:操作符(https://mp.csdn.net/editor/html/115218055)数据类型(https://mp.csdn.net/editor/html/115219664)自定义类型:结构体、枚举、联合(https://mp.csdn.net/editor/html/115373785)变量、常量(https://mp.csdn.net/editor/html/11523</div> </li> <li><a href="/article/1835383919906746368.htm" title="高性能javascript--算法和流程控制" target="_blank">高性能javascript--算法和流程控制</a> <span class="text-muted">海淀萌狗</span> <div>-for,while和do-while性能相当-避免使用for-in循环,==除非遍历一个属性量未知的对象==es5:for-in遍历的对象便不局限于数组,还可以遍历对象。原因:for-in每次迭代操作会同时搜索实例或者原型属性,for-in循环的每次迭代都会产生更多开销,因此要比其他循环类型慢,一般速度为其他类型循环的1/7。因此,除非明确需要迭代一个属性数量未知的对象,否则应避免使用for-i</div> </li> <li><a href="/article/1835382685745377280.htm" title="html+css网页设计 旅游网站首页1个页面" target="_blank">html+css网页设计 旅游网站首页1个页面</a> <span class="text-muted">html+css+js网页设计</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E6%97%85%E6%B8%B8/1.htm">旅游</a> <div>html+css网页设计旅游网站首页1个页面网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode、Sublime、Webstorm、Text、Notepad++等任意html编辑软件进行运行及修改编辑等操作)。获取源码1,访问该网站https://download.csdn.net/download/qq_42431718/897527112,点击</div> </li> <li><a href="/article/1835379662918873088.htm" title="【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(二十八)" target="_blank">【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(二十八)</a> <span class="text-muted">向往风的男子</span> <a class="tag" taget="_blank" href="/search/k8s/1.htm">k8s</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a> <div>本站以分享各种运维经验和运维所需要的技能为主《python零基础入门》:python零基础入门学习《python运维脚本》:python运维脚本实践《shell》:shell学习《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战《k8》从问题中去学习k8s《docker学习》暂未更新《ceph学习》ceph日常问题解决分享《日志收集》ELK+各种中间件《运维日常》</div> </li> <li><a href="/article/1835379153730367488.htm" title="spring mvc @RequestBody String类型参数" target="_blank">spring mvc @RequestBody String类型参数</a> <span class="text-muted">zoyation</span> <a class="tag" taget="_blank" href="/search/spring-mvc/1.htm">spring-mvc</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a> <div>通过如下配置:text/html;charset=UTF-8application/json;charset=UTF-8在springmvc的Controller层使用@RequestBody接收Content-Type为application/json的数据时,默认支持Map方式和对象方式参数@RequestMapping(value="/{code}/saveUser",method=Requ</div> </li> <li><a href="/article/1835377684025274368.htm" title="ubuntu安装opencv最快的方法" target="_blank">ubuntu安装opencv最快的方法</a> <span class="text-muted">Derek重名了</span> <div>最快方法,当然不能太多文字$sudoapt-getinstallpython-opencv借助python就可以把ubuntu的opencv环境搞起来,非常快非常容易参考:https://docs.opencv.org/trunk/d2/de6/tutorial_py_setup_in_ubuntu.html</div> </li> <li><a href="/article/1835376759739084800.htm" title="处理标签包裹的字符串,并取出前250字符" target="_blank">处理标签包裹的字符串,并取出前250字符</a> <span class="text-muted">周bro</span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>//假设这是你的HTML字符串varhtmlString=`这是一个段落。这是一个标题这是另一个段落,包含一些链接。`;//解析HTML字符串并提取文本functionextractTextFromHTML(html){varparser=newDOMParser();vardoc=parser.parseFromString(html,"text/html");vartextContent=do</div> </li> <li><a href="/article/1835376505543290880.htm" title="css设置当字数超过限制后以省略号(...)显示" target="_blank">css设置当字数超过限制后以省略号(...)显示</a> <span class="text-muted">周bro</span> <a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/css3/1.htm">css3</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a> <div>1、文字超出一行,省略超出部分,显示’…’用text-overflow:ellipsis属性来,当然还需要加宽度width属来兼容部分浏览。overflow:hidden;text-overflow:ellipsis;white-space:nowrap;2、多行文本溢出显示省略号display:-webkit-box;-webkit-box-orient:vertical;-webkit-lin</div> </li> <li><a href="/article/35.htm" title="JVM StackMapTable 属性的作用及理解" target="_blank">JVM StackMapTable 属性的作用及理解</a> <span class="text-muted">lijingyao8206</span> <a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/%E5%AD%97%E8%8A%82%E7%A0%81/1.htm">字节码</a><a class="tag" taget="_blank" href="/search/Class%E6%96%87%E4%BB%B6/1.htm">Class文件</a><a class="tag" taget="_blank" href="/search/StackMapTable/1.htm">StackMapTable</a> <div>        在Java 6版本之后JVM引入了栈图(Stack Map Table)概念。为了提高验证过程的效率,在字节码规范中添加了Stack Map Table属性,以下简称栈图,其方法的code属性中存储了局部变量和操作数的类型验证以及字节码的偏移量。也就是一个method需要且仅对应一个Stack Map Table。在Java 7版</div> </li> <li><a href="/article/162.htm" title="回调函数调用方法" target="_blank">回调函数调用方法</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>最近在看大神写的代码时,.发现其中使用了很多的回调 ,以前只是在学习的时候经常用到 ,现在写个笔记 记录一下   代码很简单:           MainDemo  :调用方法  得到方法的返回结果         </div> </li> <li><a href="/article/289.htm" title="[时间机器]制造时间机器需要一些材料" target="_blank">[时间机器]制造时间机器需要一些材料</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E5%88%B6%E9%80%A0/1.htm">制造</a> <div>      根据我的计算和推测,要完全实现制造一台时间机器,需要某些我们这个世界不存在的物质     和材料...       甚至可以这样说,这种材料和物质,我们在反应堆中也无法获得......      </div> </li> <li><a href="/article/416.htm" title="开口埋怨不如闭口做事" target="_blank">开口埋怨不如闭口做事</a> <span class="text-muted">邓集海</span> <a class="tag" taget="_blank" href="/search/%E9%82%93%E9%9B%86%E6%B5%B7+%E5%81%9A%E4%BA%BA+%E5%81%9A%E4%BA%8B+%E5%B7%A5%E4%BD%9C/1.htm">邓集海 做人 做事 工作</a> <div>“开口埋怨,不如闭口做事。”不是名人名言,而是一个普通父亲对儿子的训导。但是,因为这句训导,这位普通父亲却造就了一个名人儿子。这位普通父亲造就的名人儿子,叫张明正。      张明正出身贫寒,读书时成绩差,常挨老师批评。高中毕业,张明正连普通大学的分数线都没上。高考成绩出来后,平时开口怨这怨那的张明正,不从自身找原因,而是不停地埋怨自己家庭条件不好、埋怨父母没有给他创造良好的学习环境。      </div> </li> <li><a href="/article/543.htm" title="jQuery插件开发全解析,类级别与对象级别开发" target="_blank">jQuery插件开发全解析,类级别与对象级别开发</a> <span class="text-muted">IT独行者</span> <a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91/1.htm">开发</a><a class="tag" taget="_blank" href="/search/%E6%8F%92%E4%BB%B6%E3%80%80/1.htm">插件 </a><a class="tag" taget="_blank" href="/search/%E5%87%BD%E6%95%B0/1.htm">函数</a> <div>jQuery插件的开发包括两种: 一种是类级别的插件开发,即给 jQuery添加新的全局函数,相当于给 jQuery类本身添加方法。 jQuery的全局函数就是属于 jQuery命名空间的函数,另一种是对象级别的插件开发,即给 jQuery对象添加方法。下面就两种函数的开发做详细的说明。   1 、类级别的插件开发 类级别的插件开发最直接的理解就是给jQuer</div> </li> <li><a href="/article/670.htm" title="Rome解析Rss" target="_blank">Rome解析Rss</a> <span class="text-muted">413277409</span> <a class="tag" taget="_blank" href="/search/Rome%E8%A7%A3%E6%9E%90Rss/1.htm">Rome解析Rss</a> <div>import java.net.URL;  import java.util.List;    import org.junit.Test;    import com.sun.syndication.feed.synd.SyndCategory;  import com.sun.syndication.feed.synd.S</div> </li> <li><a href="/article/797.htm" title="RSA加密解密" target="_blank">RSA加密解密</a> <span class="text-muted">无量</span> <a class="tag" taget="_blank" href="/search/%E5%8A%A0%E5%AF%86/1.htm">加密</a><a class="tag" taget="_blank" href="/search/%E8%A7%A3%E5%AF%86/1.htm">解密</a><a class="tag" taget="_blank" href="/search/rsa/1.htm">rsa</a> <div>RSA加密解密代码 代码有待整理 package com.tongbanjie.commons.util; import java.security.Key; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerat</div> </li> <li><a href="/article/924.htm" title="linux 软件安装遇到的问题" target="_blank">linux 软件安装遇到的问题</a> <span class="text-muted">aichenglong</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98/1.htm">遇到的问题</a><a class="tag" taget="_blank" href="/search/ftp/1.htm">ftp</a> <div>1 ftp配置中遇到的问题    500 OOPS: cannot change directory   出现该问题的原因:是SELinux安装机制的问题.只要disable SELinux就可以了   修改方法:1 修改/etc/selinux/config 中SELINUX=disabled    2 source /etc</div> </li> <li><a href="/article/1051.htm" title="面试心得" target="_blank">面试心得</a> <span class="text-muted">alafqq</span> <a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>最近面试了好几家公司。记录下; 支付宝,面试我的人胖胖的,看着人挺好的;博彦外包的职位,面试失败; 阿里金融,面试官人也挺和善,只不过我让他吐血了。。。 由于印象比较深,记录下; 1,自我介绍 2,说下八种基本类型;(算上string。楼主才答了3种,哈哈,string其实不是基本类型,是引用类型) 3,什么是包装类,包装类的优点; 4,平时看过什么书?NND,什么书都没看过。。照样</div> </li> <li><a href="/article/1178.htm" title="java的多态性探讨" target="_blank">java的多态性探讨</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>java的多态性是指main方法在调用属性的时候类可以对这一属性做出反应的情况 //package 1; class A{ public void test(){ System.out.println("A"); } } class D extends A{ public void test(){ S</div> </li> <li><a href="/article/1305.htm" title="网络编程基础篇之JavaScript-学习笔记" target="_blank">网络编程基础篇之JavaScript-学习笔记</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div>1.documentWrite <html> <head> <script language="JavaScript"> document.write("这是电脑网络学校"); document.close(); </script> </h</div> </li> <li><a href="/article/1432.htm" title="探索JUnit4扩展:深入Rule" target="_blank">探索JUnit4扩展:深入Rule</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JUnit/1.htm">JUnit</a><a class="tag" taget="_blank" href="/search/Rule/1.htm">Rule</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a> <div>        本文将进一步探究Rule的应用,展示如何使用Rule来替代@BeforeClass,@AfterClass,@Before和@After的功能。         在上一篇中提到,可以使用Rule替代现有的大部分Runner扩展,而且也不提倡对Runner中的withBefores(),withAfte</div> </li> <li><a href="/article/1559.htm" title="[CSS]CSS浮动十五条规则" target="_blank">[CSS]CSS浮动十五条规则</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/css/1.htm">css</a> <div>这些浮动规则,主要是参考CSS权威指南关于浮动规则的总结,然后添加一些简单的例子以验证和理解这些规则。   1. 所有的页面元素都可以浮动 2. 一个元素浮动后,会成为块级元素,比如<span>,a, strong等都会变成块级元素 3.一个元素左浮动,会向最近的块级父元素的左上角移动,直到浮动元素的左外边界碰到块级父元素的左内边界;如果这个块级父元素已经有浮动元素停靠了</div> </li> <li><a href="/article/1686.htm" title="【Kafka六】Kafka Producer和Consumer多Broker、多Partition场景" target="_blank">【Kafka六】Kafka Producer和Consumer多Broker、多Partition场景</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/partition/1.htm">partition</a> <div>0.Kafka服务器配置 3个broker 1个topic,6个partition,副本因子是2 2个consumer,每个consumer三个线程并发读取   1. Producer package kafka.examples.multibrokers.producers; import java.util.Properties; import java.util.</div> </li> <li><a href="/article/1813.htm" title="zabbix_agentd.conf配置文件详解" target="_blank">zabbix_agentd.conf配置文件详解</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/zabbix+%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6/1.htm">zabbix 配置文件</a> <div>Aliaskey的别名,例如 Alias=ttlsa.userid:vfs.file.regexp[/etc/passwd,^ttlsa:.:([0-9]+),,,,\1], 或者ttlsa的用户ID。你可以使用key:vfs.file.regexp[/etc/passwd,^ttlsa:.: ([0-9]+),,,,\1],也可以使用ttlsa.userid。备注: 别名不能重复,但是可以有多个</div> </li> <li><a href="/article/1940.htm" title="java--19.用矩阵求Fibonacci数列的第N项" target="_blank">java--19.用矩阵求Fibonacci数列的第N项</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/fibonacci/1.htm">fibonacci</a> <div>参考了网上的思路,写了个Java版的: public class Fibonacci { final static int[] A={1,1,1,0}; public static void main(String[] args) { int n=7; for(int i=0;i<=n;i++){ int f=fibonac</div> </li> <li><a href="/article/2067.htm" title="Netty源码学习-LengthFieldBasedFrameDecoder" target="_blank">Netty源码学习-LengthFieldBasedFrameDecoder</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/netty/1.htm">netty</a> <div>先看看LengthFieldBasedFrameDecoder的官方API http://docs.jboss.org/netty/3.1/api/org/jboss/netty/handler/codec/frame/LengthFieldBasedFrameDecoder.html API举例说明了LengthFieldBasedFrameDecoder的解析机制,如下: 实</div> </li> <li><a href="/article/2194.htm" title="AES加密解密" target="_blank">AES加密解密</a> <span class="text-muted">chicony</span> <a class="tag" taget="_blank" href="/search/%E5%8A%A0%E5%AF%86%E8%A7%A3%E5%AF%86/1.htm">加密解密</a> <div>AES加解密算法,使用Base64做转码以及辅助加密: package com.wintv.common; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import sun.misc.BASE64Decod</div> </li> <li><a href="/article/2321.htm" title="文件编码格式转换" target="_blank">文件编码格式转换</a> <span class="text-muted">ctrain</span> <a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A0%81%E6%A0%BC%E5%BC%8F/1.htm">编码格式</a> <div> package com.test; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; </div> </li> <li><a href="/article/2448.htm" title="mysql 在linux客户端插入数据中文乱码" target="_blank">mysql 在linux客户端插入数据中文乱码</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E6%96%87%E4%B9%B1%E7%A0%81/1.htm">中文乱码</a> <div>1、查看系统客户端,数据库,连接层的编码  查看方法: http://daizj.iteye.com/blog/2174993 进入mysql,通过如下命令查看数据库编码方式: mysql>  show variables like 'character_set_%'; +--------------------------+------</div> </li> <li><a href="/article/2575.htm" title="好代码是廉价的代码" target="_blank">好代码是廉价的代码</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/%E8%AF%BB%E4%B9%A6/1.htm">读书</a> <div>  长久以来我一直主张:好代码是廉价的代码。 当我跟做开发的同事说出这话时,他们的第一反应是一种惊愕,然后是将近一个星期的嘲笑,把它当作一个笑话来讲。 当他们走近看我的表情、知道我是认真的时,才收敛一点。 当最初的惊愕消退后,他们会用一些这样的话来反驳: “好代码不廉价,好代码是采用经过数十年计算机科学研究和积累得出的最佳实践设计模式和方法论建立起来的精心制作的程序代码。” 我只</div> </li> <li><a href="/article/2702.htm" title="Android网络请求库——android-async-http" target="_blank">Android网络请求库——android-async-http</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>在iOS开发中有大名鼎鼎的ASIHttpRequest库,用来处理网络请求操作,今天要介绍的是一个在Android上同样强大的网络请求库android-async-http,目前非常火的应用Instagram和Pinterest的Android版就是用的这个网络请求库。这个网络请求库是基于Apache HttpClient库之上的一个异步网络请求处理库,网络处理均基于Android的非UI线程,通</div> </li> <li><a href="/article/2829.htm" title="ORACLE 复习笔记之SQL语句的优化" target="_blank">ORACLE 复习笔记之SQL语句的优化</a> <span class="text-muted">eksliang</span> <a class="tag" taget="_blank" href="/search/SQL%E4%BC%98%E5%8C%96/1.htm">SQL优化</a><a class="tag" taget="_blank" href="/search/Oracle+sql%E8%AF%AD%E5%8F%A5%E4%BC%98%E5%8C%96/1.htm">Oracle sql语句优化</a><a class="tag" taget="_blank" href="/search/SQL%E8%AF%AD%E5%8F%A5%E7%9A%84%E4%BC%98%E5%8C%96/1.htm">SQL语句的优化</a> <div>转载请出自出处:http://eksliang.iteye.com/blog/2097999   SQL语句的优化总结如下   sql语句的优化可以按照如下六个步骤进行: 合理使用索引 避免或者简化排序 消除对大表的扫描 避免复杂的通配符匹配 调整子查询的性能 EXISTS和IN运算符 下面我就按照上面这六个步骤分别进行总结: </div> </li> <li><a href="/article/2956.htm" title="浅析:Android 嵌套滑动机制(NestedScrolling)" target="_blank">浅析:Android 嵌套滑动机制(NestedScrolling)</a> <span class="text-muted">gg163</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E7%A7%BB%E5%8A%A8%E5%BC%80%E5%8F%91/1.htm">移动开发</a><a class="tag" taget="_blank" href="/search/%E6%BB%91%E5%8A%A8%E6%9C%BA%E5%88%B6/1.htm">滑动机制</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%A5%97/1.htm">嵌套</a> <div>谷歌在发布安卓 Lollipop版本之后,为了更好的用户体验,Google为Android的滑动机制提供了NestedScrolling特性 NestedScrolling的特性可以体现在哪里呢?<!--[if !supportLineBreakNewLine]--><!--[endif]--> 比如你使用了Toolbar,下面一个ScrollView,向上滚</div> </li> <li><a href="/article/3083.htm" title="使用hovertree菜单作为后台导航" target="_blank">使用hovertree菜单作为后台导航</a> <span class="text-muted">hvt</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/hovertree/1.htm">hovertree</a><a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a> <div>  hovertree是一个jquery菜单插件,官方网址:http://keleyi.com/jq/hovertree/ ,可以登录该网址体验效果。 0.1.3版本:http://keleyi.com/jq/hovertree/demo/demo.0.1.3.htm hovertree插件包含文件: http://keleyi.com/jq/hovertree/css</div> </li> <li><a href="/article/3210.htm" title="SVG 教程 (二)矩形" target="_blank">SVG 教程 (二)矩形</a> <span class="text-muted">天梯梦</span> <a class="tag" taget="_blank" href="/search/svg/1.htm">svg</a> <div>SVG <rect> SVG Shapes SVG有一些预定义的形状元素,可被开发者使用和操作: 矩形 <rect> 圆形 <circle> 椭圆 <ellipse> 线 <line> 折线 <polyline> 多边形 <polygon> 路径 <path> </div> </li> <li><a href="/article/3337.htm" title="一个简单的队列" target="_blank">一个简单的队列</a> <span class="text-muted">luyulong</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E9%98%9F%E5%88%97/1.htm">队列</a> <div> public class MyQueue { private long[] arr; private int front; private int end; // 有效数据的大小 private int elements; public MyQueue() { arr = new long[10]; elements = 0; front </div> </li> <li><a href="/article/3464.htm" title="基础数据结构和算法九:Binary Search Tree" target="_blank">基础数据结构和算法九:Binary Search Tree</a> <span class="text-muted">sunwinner</span> <a class="tag" taget="_blank" href="/search/Algorithm/1.htm">Algorithm</a> <div>  A binary search tree (BST) is a binary tree where each node has a Comparable key (and an associated value) and satisfies the restriction that the key in any node is larger than the keys in all</div> </li> <li><a href="/article/3591.htm" title="项目出现的一些问题和体会" target="_blank">项目出现的一些问题和体会</a> <span class="text-muted">Steven-Walker</span> <a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a> <div>     第一篇博客不知道要写点什么,就先来点近阶段的感悟吧。     这几天学了servlet和数据库等知识,就参照老方的视频写了一个简单的增删改查的,完成了最简单的一些功能,使用了三层架构。 dao层完成的是对数据库具体的功能实现,service层调用了dao层的实现方法,具体对servlet提供支持。  &</div> </li> <li><a href="/article/3718.htm" title="高手问答:Java老A带你全面提升Java单兵作战能力!" target="_blank">高手问答:Java老A带你全面提升Java单兵作战能力!</a> <span class="text-muted">ITeye管理员</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>本期特邀《Java特种兵》作者:谢宇,CSDN论坛ID: xieyuooo 针对JAVA问题给予大家解答,欢迎网友积极提问,与专家一起讨论! 作者简介: 淘宝网资深Java工程师,CSDN超人气博主,人称“胖哥”。 CSDN博客地址: http://blog.csdn.net/xieyuooo 作者在进入大学前是一个不折不扣的计算机白痴,曾经被人笑话过不懂鼠标是什么,</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>