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/1943992018892025856.htm" title="JSON 与 AJAX" target="_blank">JSON 与 AJAX</a> <span class="text-muted">Auscy</span> <a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/ajax/1.htm">ajax</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>一、JSON(JavaScriptObjectNotation)1.数据类型与语法细节支持的数据类型:基本类型:字符串(需用双引号)、数字、布尔值(true/false)、null。复杂类型:数组([])、对象({})。严格语法规范:键名必须用双引号包裹(如"name":"张三")。数组元素用逗号分隔,最后一个元素后不能有多余逗号。数字不能以0开头(如012会被解析为12),不支持八进制/十六进制</div> </li> <li><a href="/article/1943990125864218624.htm" title="JavaScript 树形菜单总结" target="_blank">JavaScript 树形菜单总结</a> <span class="text-muted">Auscy</span> <a class="tag" taget="_blank" href="/search/microsoft/1.htm">microsoft</a> <div>树形菜单是前端开发中常见的交互组件,用于展示具有层级关系的数据(如文件目录、分类列表、组织架构等)。以下从核心概念、实现方式、常见功能及优化方向等方面进行总结。一、核心概念层级结构:数据以父子嵌套形式存在,如{id:1,children:[{id:2}]}。节点:树形结构的基本单元,包含自身信息及子节点(若有)。展开/折叠:子节点的显示与隐藏切换,是树形菜单的核心交互。递归渲染:因数据层级不固定,</div> </li> <li><a href="/article/1943987101301272576.htm" title="精通Canvas:15款时钟特效代码实现指南" target="_blank">精通Canvas:15款时钟特效代码实现指南</a> <span class="text-muted">烟幕缭绕</span> <div>本文还有配套的精品资源,点击获取简介:HTML5的Canvas是一个用于绘制矢量图形的API,通过JavaScript实现动态效果。本项目集合了15种不同的时钟特效代码,帮助开发者通过学习绘制圆形、线条、时间更新、旋转、颜色样式设置及动画效果等概念,深化对Canvas的理解和应用。项目中的CSS文件负责时钟的样式设定,而JS文件则包含实现各种特效的逻辑,通过不同的函数或类处理时间更新和动画绘制,提</div> </li> <li><a href="/article/1943983696184930304.htm" title="基于链家网的二手房数据采集清洗与可视化分析" target="_blank">基于链家网的二手房数据采集清洗与可视化分析</a> <span class="text-muted">Mint_Datazzh</span> <a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE/1.htm">项目</a><a class="tag" taget="_blank" href="/search/selenium/1.htm">selenium</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB/1.htm">网络爬虫</a> <div>个人学习内容笔记,仅供参考。项目链接:https://gitee.com/rongwu651/lianjia原文链接:基于链家网的二手房数据采集清洗与可视化分析–笔墨云烟研究内容该课题的主要目的是通过将二手房网站上的存量与已销售房源,构建一个二手房市场行情情况与房源特点的可视化平台。该平台通过HTML架构和Echarts完成可视化的搭建。因此,该课题的主要研究内容就是如何利用相关技术设计并实现这样</div> </li> <li><a href="/article/1943979785097113600.htm" title="【前端】jQuery数组合并去重方法总结" target="_blank">【前端】jQuery数组合并去重方法总结</a> <span class="text-muted"></span> <div>在jQuery中合并多个数组并去重,推荐使用原生JavaScript的Set对象(高效简单)或$.unique()(仅适用于DOM元素,不适用于普通数组)。以下是完整解决方案:方法1:使用ES6Set(推荐)//定义多个数组constarr1=[1,2,3];constarr2=[2,3,4];constarr3=[3,4,5];//合并数组并用Set去重constmergedArray=[...</div> </li> <li><a href="/article/1943972726150590464.htm" title="Shader面试题100道之(81-100)" target="_blank">Shader面试题100道之(81-100)</a> <span class="text-muted">还是大剑师兰特</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Shader/1.htm">Shader</a><a class="tag" taget="_blank" href="/search/%E7%BB%BC%E5%90%88%E6%95%99%E7%A8%8B100%2B/1.htm">综合教程100+</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E5%89%91%E5%B8%88/1.htm">大剑师</a><a class="tag" taget="_blank" href="/search/shader%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">shader面试题</a><a class="tag" taget="_blank" href="/search/shader%E6%95%99%E7%A8%8B/1.htm">shader教程</a> <div>Shader面试题(第81-100题)以下是第81到第100道Shader相关的面试题及答案:81.Unity中如何实现屏幕空间的热扭曲效果(HeatDistortion)?热扭曲效果可以通过GrabPass抓取当前屏幕图像,然后在片段着色器中使用噪声或动态UV偏移模拟空气扰动,再结合一个透明通道控制扭曲强度来实现。82.Shader中如何实现物体轮廓高亮(OutlineHighlight)?轮廓</div> </li> <li><a href="/article/1943969321717919744.htm" title="日历插件-FullCalendar的详细使用" target="_blank">日历插件-FullCalendar的详细使用</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%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>一、介绍FullCalendar是一个功能强大、高度可定制的JavaScript日历组件,用于在网页中显示和管理日历事件。它支持多种视图(月、周、日等),可以轻松集成各种框架,并提供丰富的事件处理功能。二、实操案例具体代码如下:FullCalendar日期选择body{font-family:Arial,sans-serif;margin:20px;}#calendar{max-width:900</div> </li> <li><a href="/article/1943963776244051968.htm" title="入门html这篇文章就够了" target="_blank">入门html这篇文章就够了</a> <span class="text-muted">ξ流ぁ星ぷ132</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>HTML笔记文章目录HTML笔记html介绍什么是htmlhtml的作用HTML标签介绍常用标签标签and标签and标签u标签del删除线br标签用于换行pre标签,预处理标签span标签div标签sub标签andsup标签hr标签h1,h2...h6标签:HTML5中的语义标签:特殊字符img标签a标签第一种用法:超链接第二种用法:锚点video标签表格标签:form标签input标签selec</div> </li> <li><a href="/article/1943954447797383168.htm" title="javascript高级程序设计第3版——第12章 DOM2与DOM3" target="_blank">javascript高级程序设计第3版——第12章 DOM2与DOM3</a> <span class="text-muted">weixin_30687587</span> <a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/1.htm">数据结构与算法</a><a class="tag" taget="_blank" href="/search/ViewUI/1.htm">ViewUI</a> <div>12章——DOM2与DOM3为了增强D0M1,DOM级规范定义了一些模块。DOM2核心:为不同的DOM类型引入了一些与XML命名空间有关的方法,还定义了以编程方式创建Document实例的方法;DOM2级样式:针对操作元素的样式而开发;其特性总结:1.每个元素都有一个关联的style对象,可用来确定和修改行内样式;2.要确定某个元素的计算样式,可使用getComgetComputedStyle()</div> </li> <li><a href="/article/1943950542111830016.htm" title="OkHttp3源码解析--设计模式,android开发实习面试题" target="_blank">OkHttp3源码解析--设计模式,android开发实习面试题</a> <span class="text-muted"></span> <div>this.cache=builder.cache;}//构造者publicstaticfinalclassBuilder{Cachecache;…//构造cache属性值publicBuildercache(@NullableCachecache){this.cache=cache;returnthis;}//在build方法中真正创建OkHttpClient对象,并传入前面构造的属性值publi</div> </li> <li><a href="/article/1943950163496202240.htm" title="JavaScript 基础09:Web APIs——日期对象、DOM节点" target="_blank">JavaScript 基础09:Web APIs——日期对象、DOM节点</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/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基础09:WebAPIs——日期对象、DOM节点进一步学习DOM相关知识,实现可交互的网页特效能够插入、删除和替换元素节点。能够依据元素节点关系查找节点。一、日期对象掌握Date日期对象的使用,动态获取当前计算机的时间。ECMAScript中内置了获取系统时间的对象Date,使用Date时与之前学习的内置对象console和Math不同,它需要借助new关键字才能使用。1.实例</div> </li> <li><a href="/article/1943943987777826816.htm" title="自动化运维工程师面试题解析【真题】" target="_blank">自动化运维工程师面试题解析【真题】</a> <span class="text-muted"></span> <div>ZabbixAgent默认监听的端口是A.10050。以下是关键分析:选项排除:C.80是HTTP默认端口,与ZabbixAgent无关。D.5432是PostgreSQL数据库的默认端口,不涉及ZabbixAgent。B.10051是ZabbixServer的默认监听端口,用于接收Agent发送的数据,而非Agent自身的监听端口。ZabbixAgent的配置:根据官方文档,ZabbixAgen</div> </li> <li><a href="/article/1943943735733710848.htm" title="javaSE面试题---语法基础、面向对象、常用类、集合、多线程、文件和IO" target="_blank">javaSE面试题---语法基础、面向对象、常用类、集合、多线程、文件和IO</a> <span class="text-muted">yang_xiao_wu_</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/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><a class="tag" taget="_blank" href="/search/javase/1.htm">javase</a><a class="tag" taget="_blank" href="/search/java%E5%9F%BA%E7%A1%80/1.htm">java基础</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/%E6%96%87%E4%BB%B6%E5%92%8CIO/1.htm">文件和IO</a> <div>目录语法基础1.jdkjrejvm区别2.基本数据类型3.引用数据类型4.自动类型转换、强制类型转换5.常见的运算符6.&和&&区别7.++--在前和在后的区别8.+=有什么作用9.switch..case中switch支持哪些数据类型10.break和continue区别11.while和dowhile区别12.如何生成一个取值范围在[min,max]之间的随机数13.数组的长度如何获取?数组下</div> </li> <li><a href="/article/1943930249423155200.htm" title="GoView 强势入驻 GitCode:拖拽低代码,打造高颜值数据大屏" target="_blank">GoView 强势入驻 GitCode:拖拽低代码,打造高颜值数据大屏</a> <span class="text-muted">GitCode 代码君</span> <a class="tag" taget="_blank" href="/search/gitcode/1.htm">gitcode</a><a class="tag" taget="_blank" href="/search/%E4%BD%8E%E4%BB%A3%E7%A0%81/1.htm">低代码</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90/1.htm">开源</a> <div>信息可视化时代,数字大屏日益成为展示核心KPI、运营状态、监控预警的主流形式。然而,用传统方式开发一个定制化数字大屏需要解决多少问题?1.繁复的数据源集成,各种不同的协议和格式……2.让人晕头转向的可视化逻辑,调动艰难的样式、布局、动画,和往往难以统一的风格3.牵一发而动全身的代码结构,就想换个主题色结果开启的全局CSS大冒险……现在,一个开源项目即可搞定上述问题——拖拽式低代码数字可视化平台Go</div> </li> <li><a href="/article/1943926464663580672.htm" title="vue3面试题(个人笔记)" target="_blank">vue3面试题(个人笔记)</a> <span class="text-muted">武昌库里写JAVA</span> <a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95%E9%A2%98%E6%B1%87%E6%80%BB%E4%B8%8E%E8%A7%A3%E6%9E%90/1.htm">面试题汇总与解析</a><a class="tag" taget="_blank" href="/search/%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1/1.htm">课程设计</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>vue3比vue2有什么优势?性能更好,打包体积更小,更好的ts支持,更好的代码组织,更好的逻辑抽离,更多的新功能。描述Vue3生命周期CompositionAPI的生命周期:onMounted()onUpdated()onUnmounted()onBeforeMount()onBeforeUpdate()onBeforeUnmount()onErrorCaptured()onRenderTrac</div> </li> <li><a href="/article/1943926338326949888.htm" title="flutter知识点" target="_blank">flutter知识点</a> <span class="text-muted">ZhDan91</span> <a class="tag" taget="_blank" href="/search/flutter/1.htm">flutter</a> <div>#时隔4年了#4年前用flutter开发海外项目和医疗项目。绘制界面的语法与html还是较类似的。把这些封印的记忆和技术回顾一下,最开始是开发Android出身的,所以开发起flutter来依旧是用的androidstudio开发工具。整理下用到的知识点:整理来源:flutter面试题——基础篇(1)-CSDN博客1、Dart是单线程的。在单线程中以消息循环来运行的。其中敖汉两个任务队列。一个是微</div> </li> <li><a href="/article/1943920035919622144.htm" title="2025年渗透测试面试题总结-2025年HW(护网面试) 43(题目+回答)" target="_blank">2025年渗透测试面试题总结-2025年HW(护网面试) 43(题目+回答)</a> <span class="text-muted">独行soc</span> <a class="tag" taget="_blank" href="/search/2025%E5%B9%B4%E6%8A%A4%E7%BD%91/1.htm">2025年护网</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA%E5%92%8C%E5%8F%91%E5%B1%95/1.htm">职场和发展</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E7%A7%91%E6%8A%80/1.htm">科技</a><a class="tag" taget="_blank" href="/search/%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95/1.htm">渗透测试</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E6%8A%A4%E7%BD%91/1.htm">护网</a> <div>安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。目录2025年HW(护网面试)431.自我介绍与职业规划2.Webshell源码级检测方案3.2025年新型Web漏洞TOP54.渗透中的高价值攻击点5.智能Fuzz平台架构设计6.堆栈溢出攻防演进7.插桩技术实战应用8.二进制安全能力矩阵9.C语言内存管理精要10.Pyth</div> </li> <li><a href="/article/1943919909612351488.htm" title="Vue.js 过渡 & 动画" target="_blank">Vue.js 过渡 & 动画</a> <span class="text-muted">lsx202406</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>Vue.js过渡&动画引言在Web开发中,过渡与动画是提升用户体验的关键元素。Vue.js作为一款流行的前端框架,提供了强大的过渡与动画功能,使得开发者能够轻松实现丰富的交互效果。本文将深入探讨Vue.js中的过渡与动画,包括其原理、应用场景以及实现方法。一、Vue.js过渡原理Vue.js过渡是利用CSS3的transition属性实现的。当Vue.js侦测到数据变化时,会自动触发过渡效果。过渡</div> </li> <li><a href="/article/1943919026744913920.htm" title="JavaScript之DOM操作与事件处理详解" target="_blank">JavaScript之DOM操作与事件处理详解</a> <span class="text-muted">AA-代码批发V哥</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>JavaScript之DOM操作与事件处理详解一、DOM基础:理解文档对象模型二、DOM元素的获取与访问2.1基础获取方法2.2集合的区别与注意事项三、DOM元素的创建与修改3.1创建与插入元素3.2修改元素属性与样式3.2.1属性操作3.2.2样式操作3.3元素内容的修改四、DOM元素的删除与替换4.1删除元素4.2替换元素五、事件处理:实现页面交互5.1事件绑定的三种方式5.1.1HTML属性</div> </li> <li><a href="/article/1943917893620133888.htm" title="V少JS基础班之第五弹" target="_blank">V少JS基础班之第五弹</a> <span class="text-muted">V少在逆向</span> <a class="tag" taget="_blank" href="/search/JS%E5%9F%BA%E7%A1%80%E7%8F%AD/1.htm">JS基础班</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>文章目录一、前言二、本节涉及知识点三、重点内容1-函数的定义2-函数的构成1.函数参数详解1)参数个数不固定2)默认参数3)arguments对象(类数组)4)剩余参数(Rest参数)5)函数参数是按值传递的6)解构参数传递7)参数校验技巧(JavaScript没有类型限制,需要手动校验)2.函数返回值详解3-函数的分类1-函数声明式:2-函数表达式:3-箭头函数:4-构造函数:5-IIFE:6-</div> </li> <li><a href="/article/1943917263501455360.htm" title="python相关内容二" target="_blank">python相关内容二</a> <span class="text-muted">湫默</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>1.技术面试题(1)详细描述单调栈的工作原理和应用场景答:工作原理:维护一个栈结构,栈中元素保持单调递增或单调递减的顺序。遍历数据时,新元素入栈前,弹出栈顶所有不满足单调关系的元素,再将新元素入栈,确保栈的单调性。应用场景:解决下一个元素更大的问题,如数组中后面一个元素比前面一个入栈的元素大,则需要上一个元素出栈,然后大的那个元素入栈。(2)详细描述单调队列的工作原理和应用场景答:工作原理:维护队</div> </li> <li><a href="/article/1943917011268595712.htm" title="Javaweb学习之Vue模板语法(三)" target="_blank">Javaweb学习之Vue模板语法(三)</a> <span class="text-muted">不要数手指啦</span> <a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.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/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>目录学习资料前情回顾本期介绍(vue模板语法)文本插值Vue的Attribute绑定使用JavaScript表达式综合实例代码:学习资料Vue.js-渐进式JavaScript框架|Vue.js(vuejs.org)前情回顾项目的创建大家可以看这篇文章Vue学习之项目的创建-CSDN博客本期介绍(vue模板语法)首先,找到我们编写代码的地方找到自己项目的src文件夹,打开之后点击component</div> </li> <li><a href="/article/1943914742187880448.htm" title="Vue3 tailwindcss" target="_blank">Vue3 tailwindcss</a> <span class="text-muted"></span> <div>1、安装tailwindcsspnpmi-Dtailwindcsspostcssautoprefixer#yarnadd-Dtailwindcsspostcssautoprefixer#npmi-Dtailwindcsspostcssautoprefixer2、创建TailwindCSS配置文件npxtailwindcssinit-ptailwind.config.js/**@type{impor</div> </li> <li><a href="/article/1943914107526770688.htm" title="Vue框架之模板语法全面解析" target="_blank">Vue框架之模板语法全面解析</a> <span class="text-muted">AA-代码批发V哥</span> <a class="tag" taget="_blank" href="/search/Vue/1.htm">Vue</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a> <div>Vue框架之模板语法全面解析一、模板语法的核心思想二、插值表达式:数据渲染的基础2.1基本用法:渲染文本2.2纯HTML渲染:`v-html`指令2.3一次性插值:`v-once`指令三、指令系统:控制DOM的行为3.1条件渲染:`v-if`与`v-show`3.1.1`v-if`:动态创建/销毁元素3.1.2`v-else`与`v-else-if`:条件分支3.1.3`v-show`:动态显示/</div> </li> <li><a href="/article/1943907050870337536.htm" title="深入解析 “void(0);” 的用法与作用_void(0);" target="_blank">深入解析 “void(0);” 的用法与作用_void(0);</a> <span class="text-muted"></span> <div>关键要点void(0);是JavaScript中的一个表达式,研究表明它通常用于超链接中,防止页面跳转。它通过void运算符计算表达式并返回undefined,常用于创建“死链接”。证据显示,这种用法简单易用,但现代开发更推荐使用事件监听器。基本概念void(0);的作用void(0);是JavaScript的void运算符的一个实例,void运算符会计算一个表达式但不返回任何值,而是始终返回un</div> </li> <li><a href="/article/1943905284925747200.htm" title="css遗忘的知识2(grid布局,&父类选择器与:has() 讲解)" target="_blank">css遗忘的知识2(grid布局,&父类选择器与:has() 讲解)</a> <span class="text-muted">不断努力的根号七</span> <a class="tag" taget="_blank" href="/search/css/1.htm">css</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><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>---grid布局1.基础Grid布局定义gird布局和行宽.container{display:grid;grid-template-columns:100px200px300px;/*三列,宽度分别为100px,200px,300px*/grid-template-rows:100px200px;/*两行,高度分别为100px,200px*/}常用单位fr(fractionalunit):可用</div> </li> <li><a href="/article/1943905285789773824.htm" title="three前置课程知识" target="_blank">three前置课程知识</a> <span class="text-muted"></span> <div>学习中文网(1.threejs文件包下载和目录简介|Three.js中文网)threejs官方文件包所有版本:https://github.com/mrdoob/three.js/releases更新迭代较快,要选择对应版本使用---下载zip压缩包Threejs官网中文文档链接:https://threejs.org/docs/index.html#manual/zh/重要的内容docs包:文档</div> </li> <li><a href="/article/1943875785089675264.htm" title="Webpack5 多页面实践" target="_blank">Webpack5 多页面实践</a> <span class="text-muted"></span> <div>特性维度单页面应用-SPA多页面统一目录-MPA多页面单独部署-MPA入口数量单个,只有一个HTML文件多个,多个HTML文件多个,多个HTML文件,分别打包输出资源输出结构所有资源输出到统一目录(如js/,css/)所有页面的资源共用js/,css/等目录每页资源放在各自目录(如index/js/,index/css/)公共资源复用高:依赖打入主包或懒加载chunk,资源完全共享中:可通过spl</div> </li> <li><a href="/article/1943871502210363392.htm" title="C#常见面试题" target="_blank">C#常见面试题</a> <span class="text-muted">rapLiu</span> <a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/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>1.http和https的区别1.HTTP明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP)数据传输过程是加密的,安全性较好。2.使用HTTPS协议需要到CA(CertificateAuthority,数字证书认证机构)申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy和GlobalSign等。3.HTTP页面响应速度比</div> </li> <li><a href="/article/1943871502923395072.htm" title="C#常见面试题" target="_blank">C#常见面试题</a> <span class="text-muted">rapLiu</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>1.i++中为什么用到锁在C#中,i++通常不需要用锁,因为i++操作本身是一个原子操作。原子操作是指一个操作要么完全执行,要么完全不执行,不会被中断。因此,在单线程环境下,i++操作是安全的。然而,在多线程环境下,如果多个线程同时对i进行++操作,就可能会出现竞争条件(racecondition),导致数据不一致或错误的结果。为了避免这种情况,需要使用锁来保护i的操作,确保在同一时刻只有一个线程</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>