【备战秋招Day 6】经典面试题21-24及在线编程题16-18答案

【备战秋招Day 6】经典面试题21-24及在线编程题16-18答案_第1张图片

转载IMWeb团队,知乎地址:https://zhuanlan.zhihu.com/p/27945639

经典面试题

21.XHTML和HTML有什么区别

HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言

最主要的不同:

XHTML 元素必须被正确地嵌套。

XHTML 元素必须被关闭。

标签名必须用小写字母。

XHTML 文档必须拥有根元素。

22.什么是语义化的HTML?

直观的认识标签 对于搜索引擎的抓取有好处,用正确的标签做正确的事情!

html语义化就是让页面的内容结构化,便于对浏览器、搜索引擎解析;

在没有样式CCS情况下也以一种文档格式显示,并且是容易阅读的。搜索引擎的爬虫依赖于标记来确定上下文和各个关键字的权重,利于 SEO。

使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。

23.常见的浏览器内核有哪些?

Trident内核:IE,MaxThon,TT,The World,360,搜狗浏览器等。[又称MSHTML]Gecko内核:Netscape6及以上版本,FF,MozillaSuite/SeaMonkey等

Presto内核:Opera7及以上。 [Opera内核原为:Presto,现为:Blink;]Webkit内核:Safari,Chrome等。 [ Chrome的:Blink(WebKit的分支)]

24.HTML5有哪些新特性、移除了那些元素?如何处理HTML5新标签的浏览器兼容问题?如何区分 HTML 和HTML5?

HTML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加。

绘画 canvas

用于媒介回放的 video 和 audio 元素

本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;

sessionStorage 的数据在浏览器关闭后自动删除

语意化更好的内容元素,比如 article、footer、header、nav、section

表单控件,calendar、date、time、email、url、search

新的技术webworker, websockt, Geolocation

移除的元素

纯表现的元素:basefont,big,center,font, s,strike,tt,u;

对可用性产生负面影响的元素:frame,frameset,noframes;

支持HTML5新标签:

IE8/IE7/IE6支持通过document.createElement方法产生的标签,可以利用这一特性让这些浏览器支持HTML5新标签,浏览器支持新标签后,还需要添加标签默认的样式:

前端思考题

11.前端开发中有什么经典的轮子值得自己去实现一遍?

我造过的轮子:LiuJi-Jim/jas:异步控制的工具,11年写的,只有60行,然而炒鸡好用,吃自己狗食的级别。LiuJi-Jim/raze-tpl:模板引擎,语法风骚迷人,吃自己狗食的级别。LiuJi-Jim/mirror:Virtual-DOM实现,玩具级别。LiuJi-Jim/h5pal:万吨巨轮,仙剑奇侠传web移植(介绍)。LiuJi-Jim/c-struct:一个用于JS读写C结构体的工具,从h5pal里拆出来重构的。还有一些烂尾了,还有一些不想发出来的,各种Promise、EventEmitter、Module Loader、山寨Lodash、数据结构、类工厂、MVC……不提也罢。

12.在你的日常开发中遇到过哪些常用布局是无法用纯 CSS 实现的?

  1. 多行文字溢出显示省略号

  2. 最大行数

  3. 更好用的 Flex

  4. 元素查询(Element Queries)

  5. CSS 分页滚动

  6. 非矩形布局

  7. 流式 Grid 布局

在线编程题

16.函数的上下文

要求:将函数 fn 的执行上下文改为 obj 对象

思路:在JavaScript中,函数是一种对象,其上下文是可以变化的,对应的,函数内的this也是可以变化的,函数可以作为一个对象的方法,也可以同时作为另一个对象的方法,可以通过Function对象中的call或者apply方法来修改函数的上下文,函数中的this指针将被替换为call或者apply的第一个参数。将函数 fn 的执行上下文改为 obj 对象,只需要将obj作为call或者apply的第一个参数传入即可。

function speak(fn, obj) {
     
  return fn.apply(obj, obj);
 }

17.流程控制

要求:实现 fizzBuzz 函数,参数 num 与返回值的关系如下:
1、如果 num 能同时被 3 和 5 整除,返回字符串 fizzbuzz2、如果 num 能被 3 整除,返回字符串 fizz
3、如果 num 能被 5 整除,返回字符串 buzz
4、如果参数为空或者不是 Number 类型,返回 false
5、其余情况,返回参数 num

思路:能否整除即余数是否为0,则使用%运算符。使用if-elseif结构,只要某一条匹配,则下面的不会在进行判断。判断num是否为Number,可以用typeof运算符,返回的是字符串。

function fizzBuzz(num) {
     
    if(num%3 == 0 && num%5 == 0)
        return "fizzbuzz";
    else if(num%3 == 0)
        return "fizz";
    else if(num%5 == 0)
        return "buzz";
    else if(num == null || typeof num != "number")
        return false;
    else return num;
}

18.返回函数

要求:实现函数 functionFunction,调用之后满足如下条件:
1、返回值为一个函数 f
2、调用返回的函数 f,返回值为按照调用顺序的参数拼接,拼接字符为英文逗号加一个空格,即 ‘, ’
3、所有函数的参数数量为 1,且均为 String 类型

思路:首先执行functionFunction(‘Hello’),传入参数str,然后返回函数f,f与(‘world’)组合,执行f(‘world’),传入参数s,f返回str+”, “+s,即Hello, world。注意中间的逗号后面有一个空格。

function functionFunction(str) {
     
  var f = function(s){
     
         return str+", "+s;
     }
     return f;
 }

你可能感兴趣的:(IMWeb前端秋招训,面试题,编程)