前端基础测试题

undefined 7月前 ⋅ 313 阅读

1、什么是变量?请解释它的作用。

答:变量是计算机编程中的一个重要概念,它代表了一个可存储和操作数据的内存位置或符号。变量通常用于存储不同类型的数据,如数字、文本、布尔值等,并且可以随时更改其存储的数据内容。
变量在编程中有以下作用:
	1、存储数据:变量用于保存和管理数据,这些数据可以在程序执行过程中随时读取和修改。例如,你可以创建一个变量来存储用户的姓名或年龄。
	2、命名数据:变量通常具有一个唯一的名称,这个名称用于标识和引用存储的数据。通过使用有意义的变量名,可以增加代码的可读性和可维护性。
	3、数据传递:变量允许在程序中传递数据。你可以将一个变量的值传递给另一个变量,或者将变量的值作为参数传递给函数或方法。
	4、数据操作:通过变量,你可以对数据执行各种操作,如加法、减法、乘法、除法、字符串拼接等。这些操作可以在变量上执行,然后将结果存回同一变量或不同的变量中。
	5、控制程序流程:变量的值可以用于控制程序的流程,例如,你可以使用条件语句(如if语句)来检查变量的值,并根据条件的结果执行不同的代码块。
	6、重复操作:通过使用循环结构,可以使用变量来迭代操作,例如,对一个数组中的所有元素执行相同的操作,只需使用一个循环和一个变量来跟踪当前元素的索引。
	7、提高代码的灵活性:使用变量可以使代码更加灵活和可配置。通过更改变量的值,你可以调整程序的行为,而无需修改源代码。
	总之,变量是编程中的基本构建块,它们允许程序存储、操作和管理数据,从而实现各种计算和任务。不同的编程语言可能对变量的定义和使用有一些差异,但这个概念在几乎所有编程环境中都是通用的。

2、写出一段程序,将两个数相加并输出结果。

答:let a = 1
    let b = 3
    let c;
    c = a + b
    console.log(c)//4

3、什么是数据类型?举例说明。

答:数据类型的含义是:对储存的数据进行归类
	string是字符串类型,在储存的数据中会有字符串类型的数据

4、解释“打印”和“输出”的区别。

答:打印是将数据打印在控制台并将其数据进行展示
	输出是将数据输出到控制台或者设备中

5、什么是函数?请举例说明。//软件=程序+数据+文档,软件分为系统软件和支撑软件,系统软件都要从输入设备取得数据,向输出设备送出数据,向外存写数据,从外存读数据,对数据的常规管理这些需要指令来完成,集中组织在一起,形成专门的软件,用来支持应用软件的运行

答:在计算机编程中,函数是由一段在一起的、可以做某一件事儿的代码块,可以作为公共的代码块。函数内部包括函数体、函数名、形参、实参结构组成;
函数分为回调函数、箭头函数、普通函数、eval函数、构造函数等类型

6、解释“参数”在函数中的作用。

答:在面向对象的设计中,参数是一个对象,参数分为形参和实参,形参是在函数定义阶段中形成的参数,实参是函数调用阶段中的参数

7、什么是循环?请举例说明。

答:循环顾名思义就是一次又一次的执行,在计算机编程中,循环的数据类型是复杂数据类型,分为数组、对象等,有时数据有很多,这时候需要用循环,循环出每一个数据并进行相对应的执行过程、结果;
循环分为
    for循环:for(vari=0;i<1;i++){循环体}
    forin循环:forkeyinarray{循环体}
    while循环:while(条件){循环体}循环时如果条件为true,数据会一直被循环
    forwhile循环
    forEach循环

8、解释以下语句中的“return”关键字的作用: return 语句。

答:

9、解释“全局变量”和“局部变量”的区别。

答:全局变量是函数外定义的变量,是整个程序中的变量,程序中任何函数都可以对这个变量进行相关操作
局部变量是函数体内定义的变量,当前函数定义的变量是不可以被其他函数进行相关数据操作,

10、什么是程序调试?请举例说明。**********

答:程序调试,调试顾名思义就是检测出代码以及逻辑的错误,如果有错误并在代码中修改错误,在开发过程中,他是分为编辑器调试、运行调试两种,编辑器调试时在代码在编译过程中开始调试出现的错误,运行调试是在代码运行开始了,被装载到内存中了,这时候调试出现的错误

11、什么是注释?请举例说明。

答:注释是对代码的解释和说明,是为了提高代码可读性,注释是不会被计算机所编译

12、写出一段程序,判断一个数是否为偶数。

答:const a = 1;
    if(a % 2 == 0){
        console.log("该数字为偶数")
    }else{
        console.log("该数字为奇数")
    }

13、解释“if-else”语句的作用及用法。

答:if-else的语句的作用是基于不同的条件来执行不同的动作。
用法:当条件为 true 时执行代码,当条件为 false 时执行其他代码

14、什么是“三元运算符”?请举例说明。

答:三元运算符时es6新增的条件运算符,通常用于简洁地表示条件语句,并根据条件的真假返回不同的值。当条件表达式为真时,返回真值时的返回值;当条件表达式为假时,返回假值时的返回值。

15、解释“事件驱动编程”的基本概念。

答:事件驱动编程是为需要处理的事件编写相应的事件处理程序

16、什么是“回调函数”?请举例说明。

答:回调函数是一种特殊的函数,作为参数传递给另一个函数,并被调用函数执行完毕后调用。

17、请解释以下代码片段的功能:

    int a = 10;  
	int b = 20;  
	if (a < b) {  
	  a = b;  //a=20,b=20
	} else {  
	  b = a;  //a=10,b=10
	}
以上功能是在实际项目功能中用的最多的是在判断某个数是否为当前数组的length,如果小于length,那就让某个数为length

18、解释“冒泡排序”算法的基本思想。

答:将第一个元素和第二个元素进行比较,如果为逆序的话就将两个元素交换,比较第二个和第三个元素,以内类推,就形成一个冒泡排序

19、请简述“面向对象编程”的基本概念。

答:面向对象编程是一种广泛应用于软件开发领域的编程范式,将程序中的数据和操作看作一个个独立的对象,将程序分解为多个对象之间的交互和通信;
它有五个特点:
	抽象:将一个对象或者一组对象中的特征提取出来,形成一个抽象的概念
	封装:将一个对象的状态和行为封装在一个同意的单元中,限制外界访问该对象的方式
	继承:从一个已有的类别派生出一个新的类别
	多态:同一个操作作用于不用的对象,会产生不同的结果

20、什么是“封装”?请举例说明。

答:将一个对象的状态以及动作封装在一个统一的单元中,限制外界访问该对象的方式

21、解释“递归”这个概念,并给出一个递归函数的例子。

答:递归是一个函数在他的函数体内调用它自身,执行递归函数会反复调用其本身,每次调用都会进入新的一层。
let a = 5
const foo = function(){
	if(a >0){
		foo()
	}
}

22、什么是“死循环”?如何避免它?

答:死循环从函数角度而言,一直调用自身,没有结束条件,以此类推就形成一个死循环。
    在函数这块,写一个结束条件
    在定时器这块,写一个清除定时器的方法

23、解释“局部最大值”和“全局最大值”的区别。

答:局部最大就要看这个局部有多大,局部最大相当于极大值,绝对最大值相当于全局最大值,绝对最大值大于等于局部最大值,局部最大值是绝对最大值的待选项

24、什么是“指针”?请举例说明。

答:在计算机科学中,指针是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值

25、解释C语言中的“switch”语句的工作原理。

答: 执行 switch 时生成一个长度为最大 case 常量+1 的数组, 程序首先判断 switch 变量是否大于最大 case 常量, 若大于, 则跳到 default 分支处理; 否则取得数组索引号为 switch 变量值大小, 取得数组对应值即为相应 case 代码块地址, 程序接着跳到此地址执行, 完成分支的跳转

26、什么是“位运算”?它有什么作用?

答:在计算机中所有的数据二进制的形式存储在设备中。即 0、1 两种状态,计算机对二进制数据进行的运算(+、-、*、/)都是叫位运算

27、解释“链表”这个数据结构。

答:链表是物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成

28、什么是“队列”?什么是“栈”?它们有什么不同?

答:栈是限定在表的一端进行插入或删除操作的线性表;队列是元素的添加在表的一端进行,而元素的删除在表的另一端进行的线性表;栈的特点是后进先出,队列的特点是先进先出

29、写一个程序,将输入的数字反转(例如,输入123,输出321)。

const num = 123
let arr = []
for a in String(num){
    arr.push(a)
}
const newArr = arr.reverse((a,b)=>{
    return a-b
})
newArr.forEach(it=>{
    it
})

30、解释“异常处理”的概念和用途。

答:在程序执行过程中,当出现错误或异常情况时,程序能够及时捕获并进行相应的处理,保证程序的正常运行和数据的完整性
用途:使代码变的更健壮,及时执行的过程中出现了异常,也可以让程序具有了一部分的异常恢复能力

31、什么是“面向切面编程(AOP)”?请举例说明。

答:在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想是面向切面编程

32、什么是“装饰器模式”?请举例说明。

答:允许向一个现有的对象添加新的功能,同时又不改变其结构

33、解释Java中的“继承”这个概念。

答:是一个对象获取父对象的属性和方法,而Java继承分为单继承和多重继承。单继承是指一个子类最多只能有一个父类。多继承是一个子类可以有二个以上的父类

34、什么是“多态”?请举例说明。

答:多态指的是一个对象可以表现出多种形态,在继承中,一个子类可以重写父类的方法,从而使得同样的方法名可以根据对象的类型具有不同的行为

35、写一个程序,判断一个数是否为素数。

即只能被1和它本身整除的数就是素数
const num = 4
const newNum = 5
if(newNum>num-1){
console.log("是素数")
}

36、解释“操作符重载”的概念。

答:操作符重载是分为操作符和重载两部分,重载是一种编译时

37、什么是“模板”?请举例说明。

答:包含创建数据库对象所需的语句基本结构的样板文件
	模板可以创建对象,如数据库、表、视图、函数等。这些模板包含用户提供的参数

38、写一个程序,输出从1到N的所有偶数。

const num = 1
num+=N;
if(num % 2 == 0){
    console.log("数字为偶数")
}

39、解释“闭包”这个概念。

答:函数内部嵌套函数,内部函数可以访问外部函数的数据,但外部不可以访问内部函数

40、什么是“柯里化”?请举例说明。

答:把接收多个参数的函数变换成接收一个单一参数的函数

42、写出一段JavaScript代码,将两个字符串连接起来并输出结果。

答:const str1 = '11'
    const str2 = '22'
    const newStr = str1+str1
    console.log(newStr)//'1122’

43、解释“函数”在JavaScript中的作用,并给出一个函数的例子。

答:函数可以使代码模块化,组件化管理,既减少重复代码,使代码更清晰更有条理性
    点击btn1让num+1,点击btn2让num-1
    const num = 0
    fucntion btn1Click(){
        publicFun('btn1')
    }
    function btn2Click(){
        publicFun('btn2')
    }
    //公共方法
    funtion publicFun(flag){
        if(flag == 'btn1'){
            num++
        }else{
            num--
        }
    }

45、写出一段JavaScript代码,判断一个字符串是否为空。

答:const str = ''
    if(str.length<0){
        console.log("字符串为空")
    }

46、解释HTML中的“超链接”和“标签”是什么?

答:超链接是允许网页之间相互连接;
	标签是标记代码的语言标签,它可以使网页变得简洁并且易于维护

47、写出一段HTML代码,创建一个包含文本和图片的简单网页。

答:<!doctype html>
    <html>
        <head>  
          <title></title>
        </head>
        <body>
            <p>hello,world</p>
            <img src="1.png"/>
        </body>
    </html>

48、解释CSS是什么?并给出一个CSS样式的例子。

答:css是网页构成的一部分,代表的层叠样式表,可以让网页更加美观
    它可以在行内写css样式,也可以引入外部css文件
    例子:
    <!doctype html>
    <html>
        <head>  
          <title></title>
        </head>
        <style>
            p{
                font-size:20px;
            }
            img{
                width:200px;
                height:200px;
            }
        </style>
        <body>
            <p>hello,world</p>
            <img src="1.png"/>
        </body>
    </html>

49、什么是JavaScript?它有什么作用?

答:javascript是一种直译式脚本、动态类型、弱类型、基于原型的语言
    作用	
        1、用来给HTML网页增加动态功
        2、也可以使网页具有交互性
        3、可以处理表单,检验用户的输入,并提供及时反馈节省用户时间

50、写出一段JavaScript代码,让网页在用户点击按钮时改变颜色。

答:const btn = document.getElementById("btn")
    btn.onclick = function () {
        btn.style.backgroundColor = "red"
    }

51、解释“DOM”是什么?并给出一个使用DOM的例子。

答:DOM是一种文档对象模型,允许程序和脚本动态地访问和更新文档的内容、结构和样式
     var list = [{name:"您好"}]
     list.forEach(it=>{
        list.innerHTML = `<ul><li>${it.name}</li></ul>`
     })

52、什么是“事件”?并给出一个JavaScript事件的例子。

答:事件可以被控件识别的操作
	例如:点击按钮让一个盒子显示,点击这个动作就是一个事件

53、写出一段JavaScript代码,判断一个数字是否为正数。

答:const num = 9
    if(num>0){
        console.log("数字为正数")
    }

54、解释“闭包”在JavaScript中的作用。

答:首先,闭包的含义是函数内部嵌套函数,比如当前这个动作需要请求很多接口,像平常axios的方法使用就会形成闭包,闭包是有缺点的,使用闭包很多的话会内存泄漏。
闭包在js中的作用如下:
	1、可以使参与的函数都可以很好的放进内存中
	2、内部函数可以访问外部
	3、允许将函数与其所操作的数据关联起来,有点像面向对象编程(面向对象编程是允许函数与其他一个或者多个所操作的数据共同关联起来)

55、什么是“原型”?在JavaScript中有什么作用?

答:每创建一个函数,都会创建一个对象prototype,这个prototype就是原型
作用如下:
	1、可以模拟继承
	2、提取重复代码
	3、在格式化日期的时候可以将日期存进原型里

56、解释“异步编程”是什么?并给出一个JavaScript异步编程的例子。

答:异步编程是一种不同于同步编程的编程方式,通过异步执行代码块,可以在程序等待某些操作时不会阻塞。
例子:回调函数是在异步编程实现完成时由系统自调用的函数。

57、什么是“AJAX”?并给出一个使用AJAX的例子。

答:ajax是让网页与服务器进行交互的网页开发技术。

58、解释“BOM”是什么?在JavaScript中有什么作用?

答:BOM是浏览器对象模型(Brower Object Model),也是独立于内容而与浏览器窗口进行交互的对象,他是由很多个对象组成的,并且每个对象提供了很多方法与属性

59、什么是“文档对象模型(DOM)”?并给出一个使用DOM的例子。 60、什么是“事件流”和“事件捕获”、“事件冒泡”?并给出一个例子。

答:事件流就是页面中接收事件的顺序,ie的事件流是事件冒泡,netscape的事件流是事件捕获
    事件捕获就是事件从dom树根节点开始逐渐往下捕获到目标元素。
    事件冒泡是事件从自身元素开始逐渐网上冒到dom树根节点的位子

61、解释“this”在JavaScript中的含义和用法。

答:this的含义是指向当前元素下的一个对象,对象中包含很多该元素具备的属性与方法
    1、在普通函数中是指向windows的
    2、在箭头函数中是指向父级元素的this的
    3、在构造函数中是指向当前原型对象的
    4、在dom事件中是指向当前dom事件对象的

62、写出一段JavaScript代码,实现一个简单的计数器。

答:const resnum = 0
    const num1 = 4const 
    const num2 = 5
    resBtn.onclick = function (){
        resnum = num1 + num2
    }

63、解释“回调函数”是什么?并给出一个回调函数的例子。

答:回调函数是一种特殊的函数,作为参数传递给另一个函数,并被调用函数执行完毕后调用。
list.forEach(()=>{其中使用了回调函数})

64、解释“Promise”是什么?并给出一个Promise的例子。

答:promise是解决异步编程问题的方案。
例子:使用promise+ajax可以实现网页与服务器之间的网页开发技术

65、什么是“Fetch API”?并给出一个使用Fetch API的例子。

答:ajax是基于XMLHttpRequest进行创建实例,而fetch是不需要的,也是支持promise一起实现网页与服务器交互

66、解释并给出一个例子,说明什么是“作用域”以及它在JavaScript中的作用。

答:作用域就是一个区域的代码块,它分为全局作用域与函数作用域,全局作用域是当前所有程序的区域,函数作用域顾名思义就是局部作用域,是指当前函数内部的区域

67、写一个JavaScript函数,该函数接受一个数字数组和一个目标值,然后返回数组中第一个大于或等于目标值的元素的索引。如果没有这样的元素,返回-1。

答:const arr = [1,2,3,4,5]
    const tarVal = 1
    function fun(){
        //获取目标值的索引
        const list = arr.filter(it=>{
            return it
        })
        const tarIndex = list.indexOf(tarVal)
        if(list[0] >= tarIndex){
            return 0
        }else{
            return -1
        }
    }

68、假设你有一个不可变的列表,你需要通过不使用额外的存储空间来翻转它。你可以使用任何语言特性(例如,Python中的列表理解和Java中的迭代器)。请描述你的解决方案并解释为什么它是有效的。******

******

69、假设你正在构建一个网页,该网页需要显示一个五分钟的倒计时。当倒计时结束时,页面上应显示“倒计时结束”。你会如何实现这个功能?

答:使用定时器包裹在外面,通过Date对象获取处中国utc时间,在中国utc时间五分钟过后,做个判断,在判断内写入倒计时结束

70、写一个JavaScript函数,该函数会检查一个给定数组是否包含特定元素。如果包含,返回true;否则,返回false。

答:const arr = [1,2,3,4]
    if(arr.includes(1) == true){
        return true
    }else{
        return false
    }

71、解释“回调地狱”(Callback Hell)是什么,并给出一个你避免它的例子。 答:回调地狱就是回调函数层层嵌套。 使用async-await是可以解决回调地狱问题 72、什么是“高阶函数”(Higher-order function)?并给出一个JavaScript中的高阶函数的例子。

答:高阶函数就是返回值为函数的函数。
    const arr = [1,3,4]
    arr.map(it=>{
        return it*2
    })

73、解释“节流”(Throttling)和“防抖”(Debouncing)的概念,并给出一个在JavaScript中实现它们的例子。

答:防抖是在程序多次执行事件,只会返回最后一次的事件。节流是保证一个事件在一定事件内只能执行一次。
    防抖:搜索框、滚动事件scroll
    节流:dom的拖拽功能实现

74、描述并给出一个例子,说明如何在JavaScript中实现“深度复制”(Deep Copy)。

答:首先,解释以下深度复制名义上就是深拷贝,它是在堆内存中开辟一个空间来存储一个一摸一样的的克隆对象
JSON.stringify(),JSON.parse()
OBject.assign()

75、写一个JavaScript函数,该函数可以比较两个字符串的“熵”(entropy)或复杂性。例如,字符串“hello”的熵将低于字符串“hello1234567890”。 你的函数应该接受两个字符串作为参数,并返回一个数值表示第一个字符串的熵比第二个字符串高多少。

答:???????????????

76、解释“原型链”(Prototype Chain)并给出一个JavaScript中的例子。

答:原型链是实例对象和原型对象之间的链接,每一个对象都有原型,原型本身又是对象,原型又有原型,以此类推形成一个链式结构

77、写一个JavaScript函数,该函数可以接受一个字符串,并判断该字符串是否是合法的电子邮件地址。

答:function emailReg(emailSrc){
	const pattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	if(pattern.test(emailSrc)== true){
		console.log("电子邮件地址规则正确")
	}
}

78、解释“作用域链”(Scope Chain)和“作用域”(Scope)是什么,并给出一个JavaScript中的例子。

答:作用域就是变量的可用性的代码范围,如果超过这个范围,变量就不可用了。
    作用域链是有权访问的所有变量和函数的有序访问,先从自身寻找变量,如果找不到,那就从上一级找,找到返回,没找到继续往上找,以此类推直到根节点,还是找不到就报错
function fun(){
    const num = 0//局部作用域
    console.log(num)
}

79、什么是“闭包”(Closure)?并给出一个JavaScript中的闭包例子。

答:闭包是函数内嵌套函数,外部不可以访问内部,内部可以访问外部。定期没有被垃圾回收机制回收
1、无用的定时器积攒很多2、无用的全局变量较多

80、解释“模块化”(Modularity)是什么,并说明为什么它在现代前端开发中重要。

答:模块化的意思就是分为很多个组件进行开发,会比较省性能,对于程序员开发时来说,比较方便寻找之前的变量。

81、给出一个你实现过的例子,说明如何使用正则表达式来验证用户输入的数据。

function validate(type) {
    var phone = 用户输入的数据; //手机号码
    var regPhone = /^1[3456789]{1}\d{9}$/; //手机正则
    //验证手机号
    if (phone === '') {
        return '请输入手机号码'
    } else if (!regPhone.test(phone)) {
        return '手机号格式错误'
    }
    return true;
}

82、解释“回流”(Reflow)和“重绘”(Repaint)是什么,并说明如何在网页性能优化中使用它们。

答:回流是只改变盒子的大小以及间隔。重绘是改变整体页面的布局以及样式

83、写一个JavaScript函数,该函数可以比较两个数的大小,并返回较大的数。

答:const num1 = 3
    const num2 = 9
    const bigNum = 0
    fun()
    function fun(){
        return bigNum = Math.max(num1,num2)
    }

全部评论: 0

    我有话说: