前端面试题

1. 下面哪些语句可以 在JS里判断一个对象oStringObject是否为String。

  • oStringObject instanceof String
  • typeof oStringObject == ‘string’
  • oStringObject is String
  • 以上答案都不正确

解释:

JS 中值的类型分为原始值类型和对象类型。原始值类型包括 number, string, boolean, null 和 undefined;对象类型即 object。首先原始值类型它就不是对象。
另外,要注意 ‘hello’ 和 new String(‘hello’) 的区别,前者是字符串字面值,属于原始类型,而后者是对象。用 typeof 运算符返回的值也是完全不一样的:

typeof 'hello';  // 'string'
typeof new String('hello');  // 'object'

之所以很多人分不清字符串字面值和 String 对象,归根结底就是 JS 的语法对你们太过纵容了。当执行 ‘hello’.length 时,发现可以意料之中的返回 5,你们就觉得 ‘hello’ 就是 String 对象,不然它怎么会有 String 对象的属性。其实,这是由于 JS 在执行到这条语句的时候,内部将 ‘hello’ 包装成了一个 String 对象,执行完后,再把这个对象丢弃了,这种语法叫做 “装箱”,在其他面向对象语言里也有(如 C#)。不要认为 JS 帮你装箱了,你就可以在写代码的时候不分箱里箱外了!


2.下面属于javascript基本数据类型的有?

  • 字符串
  • 数字
  • null
  • undefined

解释:
js七种数据类型:Sting Object null undefined Array Boolean Number
js五种基本类型:String Boolean Number null undefined
typeof六种返回格式:‘string’ ‘number’ ‘object’ ‘function’ ‘boolean’ ‘undefined’


3. 有关this指针

有如下JavaScript程序:

var Test= {
    foo: "test",
    func: function() {
        var self = this;
        console.log(this.foo);  
        console.log(self.foo);  
        (function() {
            console.log(this.foo);  
            console.log(self.foo);  
        }());
    }
};
Test.func();

会输出什么?
答案:test<br>test<br>undefined<br>test
解释:
this指针指向其调用者,所以在执行Test.func()之后,func()的调用者是Test这个对象,所以func内部的this指的就是Test对象,这样的话前两个输出都是“test”。需要注意的是,self作为一个变量,把this指针的指向者(Test对象)保存了下来。内部的函数闭包在执行的时候没有调用者,则this指向window对象,输出“undefined”。self.foo访问闭包函数外部的self变量,也就是test对象,输出“test”.


4. 关于form

关于form标签的说法,下列错误的是?(D)
A: <form> 标签用于为用户输入创建 HTML 表单
B: 数据通过设置的action属性提交到指定的位置
C: <form>标签目前只支持GET和POST请求,且默认为GET
D: <form>标签的enctype属性值默认为multipart/form-data

解释:
enctype属性的值有四个:
application/x-www-form-urlencoded:在发送前编码所有字符(默认)
multipart/form-data:不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。
text/plain:空格转换为 “+” 加号,但不对特殊字符编码。
application/json:json格式的数据

5.

如果想在bash中,把标准输入流重定向到标准错误输出流,应该加下面那条命令?
答案:0&gt;&amp;2

补充:
HTML的&lt;&gt;&amp;&quot;&copy;分别是<,>,&,",©;的转义字符

6. 下面哪个算法对单链表排序最快?

答案:快速排序

7. 图

图G的邻接矩阵表达如下,那么G的顶点数和边数为:
0 0 1 1 1
0 0 1 1 0
1 1 0 1 0
1 1 1 0 1
1 0 0 1 0

答案: 5,7

8. 编程题

页面中存在id=jsContainer的DOM元素。
该DOM元素内会给出一段随机文本,可能包含一些链接,比如https://www.baidu.com,或者 www.baidu.com?from=onlineExam,如果出现链接文本,请给该链接文本加上链接标签,用户点击后能直接在新窗口中打开该链接。
请完成 link 函数,完成该功能
1、container只有纯文本内容,不包含其他dom元素
2、识别所有以http://、https://或者www.开始的链接
3、所有www.开头的链接,默认使用 http 协议
4、所有链接在新窗口打开

代码实现:这个通过率目前只有60%,还需要调试!!!

<!DOCTYPE html>
<html>
    <head>
        <title>
        </title>
        <style type="text/css">
            a {
			color: #00bc9b;
		}
        </style>
    </head>
    <body>
        <div id="jsContainer">
            这里会给出一段随机文本,可能包含一些链接,比如https://www.baidu.com,或者 www.baidu.com?from=onlineExam,如果出现链接文本,请给该链接文本加上链接标签,用户点击后能直接在新窗口中打开该链接。
        </div>
    </body>
    <script type="text/javascript">
        function link() {
		    var obj = document.getElementById('jsContainer')
		    var container = obj.innerHTML
		    // console.log(container)
		    var reg = /(http:\/\/|https:\/\/)?www.[-A-Za-z0-9+&@#/%?~=_|!:,.;]+/g
		    // var res = null
		    // while((res=reg.exec(container))!==null){
		    // 	console.log(res[0])
		    // }
		    // var res = reg.exec(container)
		    // console.log(res)
		    var result = container.replace(reg, function (text) {
		    	console.log(text)
		    	console.log('aaaa')
		    	if(/^www./.test(text)){
		    		text = 'http://'+text
		    	}
		    	return '<a target="_blank" href='+text+'>'+text+'</a>';
		    })
		    obj.innerHTML = result

     
		}
		link()
    </script>
</html>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

. . . . .

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值