zoukankan      html  css  js  c++  java
  • 面试题

    ## src和href的区别
    src是对资源的引用,它指向的内容会嵌入到当前标签的位置,用于代替这个元素,比如<img src="abc.jpg">
    href是超文本引用,用于检历这个标签和外部资源之间的关系。

    ## 同步和异步的区别
    同步:客户端给服务端发送请求,在等待服务端响应的请求时,客户端是不做其他事情的,一直等待服务端处理完成以后返回客户端,这样会使用户等待的时间过长。
    同步的使用场景:有时必须要拿到返回的数据才能进行下一步操作时,用同步,异步是解决不了的。
    异步:将请求去放入队列,并反馈给用户,在等待服务器响应的同时,客户端可以去做其他的事情,大大的提高了效率。

    ## json的了解
    json是一种轻量级的数据交换格式,采用了完全独立于编程语言的文本格式来存储和表示数据。
    JSON的特点:1.json是一种轻量级的数据交换格式,不是js独有的
               2.json的组成:简单值+"对象"+"数组"
               3.json里面的字符串需要加双引号
               4.json里面没有var关键之,没有分号(;)等js相关语法。

    ## document.load和document.ready的区别
    load事件需要页面完全加载完成以后才可以触发 。 
    ready事件不要求页面完全加载完,只需要dom结构加载完成(不包含图片等非文字bai媒体文件du)即可触发。

    ## iframed的缺点
    iframe是一种框架,也是一种很常见的网页嵌入方式

    iframe的优缺点分析
    ifrmae元素可以在父文档中插入一个新的HTML文档。
    <iframe>优点:
    解决加载缓慢的第三方内容如图标和广告等的加载问题
    Security sandbox
    并行加载脚本
    <iframe>的缺点:
    即时内容为空,加载也需要时间
    会阻止页面加载
    没有语意

    ## xhtml和html的区别
    XHTML是可扩展表姐语言 html是超文本标记语言
    相比于html,xhtml要求1.标签必须闭合。
                        2.所有标签的元素和属性的名字都必须使用小写。
                        3.所有的XML表姐都必须合理嵌套。
                        4.所有的属性都要用引号""括起来

    ## html的全局属性
    class 规定了元素的类名
    id 规定了元素的唯一ID
    dir 规定元素中内容的文本方向
    hidden 规定该元素是无关的,被隐藏的元素不会显示
    lang 规定元素中内容的语言代码
    style 规定元素的行内样式
    title 规定了元素的额外信息。

    ## base64的原理及优缺点
    图片的base64编码就是将一副图片数据编码成一串字符串,使用该字符串代替图像地址
    优点:减少请求数量(减轻服务器的压力)
    缺点:图片体积会更大(文件请求速度会更慢)
    所以一般8-12k以下的图片适合用base64。

    ## 对浏览器内核的了解
    浏览器一共有五大浏览器,分别是:
    IE(Trident内核),Firefox(Gecko内核),Chrome(Blink内核),Safari(webkit内核),Opera(presto——>webkit->Blink)

    ## cookie的缺点(三点)
    1.隐私问题,启用cookie的web浏览器会跟踪访问过的所有网站。第三方可以访问这些写cookie储存的信息
    2.安全问题,cookie是以明文形式存储,任何人都可以打开并修改cookie
    3.难以解密,我们可以手动去加密和解密cookie,但需要额外的编码,会影响浏览器的性能
    4.大小有限制(4k,一般只能储存20个左右),只能储存简单的字符串信息。

    ## 常用的测试代码性能的工具
    loadrunner 用的人多、资料全、可以录制,支持java写脚本,推荐入门学习
    jmeter该软件开源免费,从性能测试的基本功能角度应该都能满足你的需要

    对于代码级别常用的性能测试工具有DevPartner Studio、Red Gate、Jtest、Jprobe、JunitPerf和Xdebug等

    ## 从前端的角度出发做好SEO需要考虑什么
    SEO其实就是搜索引擎优化,是一种通过特定的方法优化自己网站的自然搜索排名的方法。

    了解搜索引擎如何抓取网页和如何索引网页
      你需要知道一些搜索引擎的基本工作原理, 各个搜索引擎之间的区别, 搜索机器人(SE robot 或叫 web crawler) 如何进行工作, 搜索引擎如何对搜索结果进行排序等等。

    Meta 标签优化
      主要包括主题(Title), 网站描述(Description), 和关键词(Keywords) 。 还有一些其它的隐藏文字比如 Author(作者) , Category(目录) , Language(编码语种) 等。如何选取关键词并在网页中放置关键词
    搜索就得用关键词。 关键词分析和选择是 SEO 最重要的工作之一。 首先要给网站确定主关键词(一般在 5 个上下) , 然后针对这些关键词进行优化, 包括关键词密度(Density) , 相关度(Relavancy) , 突出性(Prominency) 等等。

    了解主要的搜索引擎
      虽然搜索引擎有很多, 但是对网站流量起决定作用的就那么几个。 比如英文的主要有Google, Yahoo, Bing 等; 中文的有百度, 搜狗, 有道等。 不同的搜索引擎对页面的抓取和索引、 排序的规则都不一样。 还要了解各搜索门户和搜索

    引擎之间的关系, 比如 AOL 网页搜索用的是 Google 的搜索技术, MSN 用的是 Bing 的技术。

    主要的互联网目录
      Open Directory 自身不是搜索引擎, 而是一个大型的网站目录, 他和搜索引擎的主要区别是网站内容的收集方式不同。 目录是人工编辑的, 主要收录网站主页; 搜索引擎是自动收集
    的, 除了主页外还抓取大量的内容页面。

    按点击付费的搜索引擎
      搜索引擎也需要生存, 随着互联网商务的越来越成熟, 收费的搜索引擎也开始大行其道。 最典型的有 Overture 和百度, 当然也包括 Google 的广告项目 Google Adwords。 越来越多的人通过搜索引擎的点击广告来定位商业网站, 这里面也大有优化和排名的学问, 你得学会用最少的广告投入获得最多的点击。

    搜索引擎登录
      网站做完了以后, 别躺在那里等着客人从天而降。 要让别人找到你, 最简单的办法就是将网站提交(submit) 到搜索引擎。 如果你的是商业网站, 主要的搜索引擎和目录都会要求你付费来获得收录(比如 Yahoo 要 299 美元) , 但是好消息是(至少到目前为止) 最大的搜索引擎 Google 目前还是免费, 而且它主宰着 60%以上的搜索市场。

    链接交换和链接广泛度(Link Popularity)
      网页内容都是以超文本(Hypertext) 的方式来互相链接的, 网站之间也是如此。 除了搜索引擎以外, 人们也每天通过不同网站之间的链接来 Surfing(“冲浪” ) 。 其它网站到你的网站的链接越多, 你也就会获得更多的访问量。 更重要的是, 你的网站的外部链接数越多,会被搜索引擎认为它的重要性越大, 从而给你更高的排名。

    合理的标签使用

    ## table的缺点
    1.table要不它html标签占更多的字节(延迟下载时间,占用服务器更多的流量资源)
    2.table会做当浏览器渲染引擎的渲染顺序(会延迟页面的生成速度)
    3.在某些浏览器中Table文字的拷贝会出现问题。
    4.table一旦设计完成就会变成死的,很难通过css让他展示新的面貌。

    ## IE和标准浏览器对事件处理的区别
    命令会不同
    1.监听:
      标准:element.addEventListener()
           element.removeEventLister()
      IE:element.attachEvent()
          element.detachEvent()

    2.阻止冒泡
      标准:event.stopPropagation();
      IE:event.cancelBBubble=true;

    3.阻止默认行为
      标准:event.preventDefault();
      IE:event.returnValue=false;

    4.event
      标准:event
      IE8以下:window.event

    5.触发当前事件的源对象
      Firefox,Chrome:event.target
      IE,Chrome:event.srcElement
      

    ## 哪些操作会造成内存泄漏
    首先了解什么是内存泄漏:就是没有使用,或者已将使用完的变量,没有及时回收。
    1.意外产生的全局变量
    (1)初始化未经声明的变量。总是会创建出一个全局变量
     (2)由this创建的全局变量
     注意:有些全局变量产生的垃圾不可回收,尤其是当全乎变量用于临时储存和处理大量信息的时候,确保用完之后将它设置为null。

    2.计时器或回调函数
    一旦定时器不需要,就去将他移除

    3.dom清空或删除时,事件未清除导致的内存泄漏

    4.闭包,会产生全局变量,在IE下可能造成内存泄漏。

    ## 堆和栈的区别
    堆:队列优先,先进先出;动态分配的空间 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式类似于链表。

    栈:先进后出;由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
    堆与栈实际上是操作系统对进程占用的内存空间的两种管理方式,主要有如下几种区别: 
    (1)管理方式不同。
    栈由操作系统自动分配释放,无需我们手动控制;堆的申请和释放工作由程序员控制,容易产生内存泄漏;

    (2)空间大小不同。
    每个进程拥有的栈的大小要远远小于堆的大小。理论上,程序员可申请的堆大小为虚拟内存的大小,进程栈的大小 64bits 的 Windows 默认 1MB,64bits 的 Linux 默认 10MB;

    (3)生长方向不同。
    堆的生长方向向上,内存地址由低到高;栈的生长方向向下,内存地址由高到低。

    (4)分配方式不同。
    堆都是动态分配的,没有静态分配的堆。栈有2种分配方式:静态分配和动态分配。静态分配是由操作系统完成的,比如局部变量的分配。动态分配由alloca函数进行分配,但是栈的动态分配和堆是不同的,他的动态分配是由操作系统进行释放,无需我们手工实现。

    (5)分配效率不同。
    栈由操作系统自动分配,会在硬件层级对栈提供支持:分配专门的寄存器存放栈的地址,压栈出栈都有专门的指令执行,这就决定了栈的效率比较高。堆则是由C/C++提供的库函数或运算符来完成申请与管理,实现机制较为复杂,频繁的内存申请容易产生内存碎片。显然,堆的效率比栈要低得多。

    (6)存放内容不同。
    栈存放的内容,函数返回地址、相关参数、局部变量和寄存器内容等。当主函数调用另外一个函数的时候,要对当前函数执行断点进行保存,需要使用栈来实现,首先入栈的是主函数下一条语句的地址,即扩展指针寄存器的内容(EIP),然后是当前栈帧的底部地址,即扩展基址指针寄存器内容(EBP),再然后是被调函数的实参等,一般情况下是按照从右向左的顺序入栈,之后是被调函数的局部变量,注意静态变量是存放在数据段或者BSS段,是不入栈的。出栈的顺序正好相反,最终栈顶指向主函数下一条语句的地址,主程序又从该地址开始执行。堆,一般情况堆顶使用一个字节的空间来存放堆的大小,而堆中具体存放内容是由程序员来填充的。

    ### 常见web安全防护原理
    https://blog.csdn.net/liu0415111/article/details/79601227
     
    ## null和undefined的区别
    null表示没有对象,即该处不应该有值
    (1) 作为函数的参数,表示该函数的参数不是对象
    (2) 作为对象原型链的终点
    undefined表示缺省值,即此处应该有值,但没有定义
    (1)定义了形参,没有传实参,显示undefined
    (2)对象属性名不存在时,显示undefined
    (3)函数没有写返回值,即没有写return,拿到的是undefined
    (4)写了return,但没有赋值,拿到的是undefined
    null和undefined转换成number数据类型
    null 默认转成 0
    undefined 默认转成 NaN
  • 相关阅读:
    js处理富文本编辑器转义、去除转义、去除HTML标签
    web sec tools / Arachni
    OS + Linux IP / Inside IP / Outside IP
    OS + Linux SMB / Samba
    OS + Linux NTP Server
    my live / PC NAS / weiliantong QNAP TS-532X 4.5.1.1495 / cipanzhenlie / raid / Synology
    summarise() regrouping output 警告
    binary_crossentropy和BinaryCrossentropy的区别
    损失函数BinaryCrossentropy例子说明
    理解功能强大的sed替换命令
  • 原文地址:https://www.cnblogs.com/lmm1010/p/13274585.html
Copyright © 2011-2022 走看看