Javascript 综合笔试、排错题、编程题总结(一)

一、基础笔试题

       1. 声明age变量并赋值为18

    //存在变量提升。未声明也可以使用,未声明时为undefined
    //不常用,以后声明变量统一使用 let
    var age = 18
    // 不存在变量提升。变量需要先声明后再使用,否则会报错;不允许重复声明。
    let age = 18
    //一旦声明就必须立即初始化; 常量值就不能改变了(指的是内存地址不能改变)
    const age = 18

        2. 声明uname, age, gender 多个变量

    let uname = 1
    let age
    let gender
    console.log(typeof uname)//number

        3. 定义数组,保存 小黑、小红、小花 三个人的名字

    let arr = ['小黑', '小红', '小花']

        4. 写出for循环遍历数组的基本语法

for (let i = 0; i < 8; i++) {
      document.write('o')
    }
// oooooooo

        5. 写出数字自增的做法有哪些

    let a
    a++//先运算,再+1
    ++a//先+1,再运算

        6. 写出if单分支、双分支、多分支语句

    //单支
    if (条件) {
      //执行语句;(判断条件为true的时候执行)
    }
    //双支
    if (条件) {
      //执行语句;(判断条件为true的时候执行)
    } else {
      // 执行语句;(判断条件为false的时候执行)
    }
    // 注意:if()里面的可以写任何的表达式,都会自动数据类型转化成布尔值。
    //多分支
    if (表达式1) {
      执行语句1
    } else if (表达式2) {
      执行语句2
    } else if (表达式3) {
      执行语句3
    } else {
    }
    // 执行过程 从上往下,满足哪个条件就执行其相对应的语句
    //都不满足时,执行最后的else的语句,只能进入其中之一

        7. 请写出三元运算符的语法

    //条件 ? 表达式1 : 表达式2
    let num = 10;
    let result = num > 5 ? '是的' : '不是的';
    console.log(result);  //是的
        

        8. 请写出for循环的语法

    for(初始化变量;条件表达式;操作表达式){
 
    //循环体
    }
    //初始化变量 就是声明一个普通变量,通常用作为计数器使用
    //条件表达式 用来决定每一次循环是否继续执行,就是终止的条件
    //操作表达式 是每次循环最后执行的代码,经常用于计数器变量进行更新(递增或者递减)

        9. 写出出数组的常用方法和对应的作用

        1) 创建数组

    let arr = ['小白','小黑','小黄','小绿',]

     2) 获取数组里面的元素

        使用数组名[n]来获取,n从0开始,arr[0]代表第一个元素

    //定义数组
    let arr = [1,2,3]
    // 获取数组中的第2个元素
    alert(arr[1]

        3)数组的遍历

 //数组的遍历:借助for循环
 	let arr3 = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
        for (var i = 0; i < 7; i++) {
            console.log(arr3[i]);
        }

         4) 新增数组元素

        a.直接修改length长度(新增为undefined)

	    let arr = ['123', '456', '789']
        arr.length = 5
        console.log(arr[3])  // undefined
        console.log(arr[4]) // undefined

        b. 加数组元素

    //修改数组元素:修改索引号
    let arr = ['123', '456', '789']
    arr[3] = '新加'
    arr[4] = '多加'
    arr[0] = '替换' //直接赋值会替换相应的元素值
    console.log(arr) //如果直接赋值给数组,那么会将整个数组覆盖

        5.数组翻转

        设置一个新的数组,把旧数组里的数从尾部开始依次扔进去

	let newArr = [];
	let arr = ['我', '不', '是', '黄', '容'];
	for (let i = arr.length - 1; i >= 0; i--) {
	    newArr[newArr.length] = arr[i];
	}
	console.log(newArr);

  10. 写出函数的语法

              带有形参和返回值

        函数的本质是封装(包裹),函数体内的逻辑执行完毕后,函数外部如何获得函数内部的执行结果呢?要想获得函数内部逻辑的执行结果,需要通过 return 这个关键字,将内部执行结果传递到函数外部,这个被传递到外部的结果就是返回值。

fuction  函数名(形参1,  形参2, 形参3 ...) {
	//函数体
}
//下面是调用
函数名(实参1, 实参2, 实参3);
形参1 = 实参1;
形参2 = 实参2;

    function age(x, y) {
      let sum = x + y
      return sum
    }
    age(1, 2)
    console.log(sum)//3

        11. 写出作用域有哪些

        1)全局作用域

作用于所有代码执行的环境(整个 script 标签内部)或者一个独立的 js 文件

处于全局作用域内的变量,称为全局变量

        2)局部作用域

作用于函数内的代码环境,就是局部作用域。 因为跟函数有关系,所以也称为函数作用域。

处于局部作用域内的变量称为局部变量

如果函数内部,变量没有声明,直接赋值,也当全局变量看,但是强烈不推荐

但是有一种情况,函数内部的形参可以看做是局部变量。

        12. 写出对象语法

        声明一个对象类型的变量与之前声明一个数值或字符串类型的变量没有本质上的区别。用花括号。

    let user = {}//user 便是一个对象了,目前它是一个空对象

        13. 写出遍历对象的语法

    let obj = {
        uname: 'pink'
    }
    for(let k in obj) {
        // k 属性名  字符串  带引号    obj.'uname'     k ===  'uname'
        // obj[k]  属性值    obj['uname']   obj[k]
        console.log(k) //数 打印属性名
        console.log(obj[k])//对象 打印属性值
    }

        14. 写出基本数据类型有哪5种

        Undefined(未定义类型)、Null(空引用数据类型)、 Boolean(布尔类型)、Number(数字类型)和String( 字符串类型)

        15. 写出 转换为数值型常见方法

        1)隐式转换

        +号两边之要有一个是字符串,都会把另一个转成字符串

        +‘123’  是数字类型   除了+外,- * /  都会把数据转换为数字型

     let num = 13 // 数值
    let num2 = '2' // 字符串

    // 结果为 132,+若一侧为字符串,则会将另一侧也转化为字符串
    // 原因是将数值 num 转换成了字符串,相当于 '13'
    // 然后 + 将两个字符串拼接到了一起
    console.log(num + num2)//132

    // 结果为 11
    // 原因是将字符串 num2 的'2'转换成了数值,相当于 2
    // 然后数值 13 减去 数值 2
    console.log(num - num2)//11

    let a = prompt('请输入一个数字')//1
    let b = prompt('请再输入一个数字')//2

    alert(a + b);//12

        2)显示转换

      parseInt 取整数

      parseFloat 取数字 带小数 浮点数

      Number

        通过 Number 显示转换成数值类型,当转换失败时结果为 NaN(Not a Number)即不是一个数字。

    let t = '12'
    let f = 8

    // 显式将字符串 12 转换成数值 12
    t = Number(t)

    // 检测转换后的类型
    // console.log(typeof t);
    console.log(t + f) // 结果为 20

        16. 写出模板字符串使用方式

        通过单引号( '') 、双引号( "")或反引号包裹的数据都叫字符串,单引号和双引号没有本质上的区别,推荐使用单引号。

        注意事项:

  1. 无论单引号或是双引号必须成对使用

  2. 单引号/双引号可以互相嵌套,但是不以自已嵌套自已

  3. 必要时可以使用转义符 \,输出单引号或双引号

  4. 模板字符串 外面用`` 里面${} 反引号

    eg:我今年${age}岁了

    let user_name = '小明' // 使用单引号
    let gender = "男" // 使用双引号
    let str = '123' // 看上去是数字,但是用引号包裹了就成了字符串了
    let str1 = '' // 这种情况叫空字符串
		
    documeent.write(typeof user_name) // 结果为 string
    documeent.write(typeof gender) // 结果为 string
    documeent.write(typeof str) // 结果为 string

     17. 写出布尔类型的值为false 的值哪些

        空 👉( 、 0、undefined、null、false、NaN转换为布尔型为false,其余都为true)

        18. 写出  +加号的功能有哪些

        1)求和运算:

  • 两边都是数值类型时进行求和运算,如果数值+布尔值会直接把布尔类型转换成 1 or 0 来进行运算
    let num = 1+2
    let num1 = 1+true//1+1
    let num2 = 1+false//1+0

        2)连接字符串:

  • 字符串+任何类型数据 = 拼接之后的新字符串
  • 变量“相加”:要看两个变量中的是否有字符串,如果有,就起到连接字符串作用
  let str =1+'1'; // '11'
  let str = '1' + true;// '1true'

        3)数值字符串转数值:

  • 可以将“数值字符串”转成 数值
  • 可以将prompt 接受的数值(string类型)转换成数值
    let num = +'1';//1
    console.log(typeof num);//number
    //接受的值转换成数值
    let  userAge = +prompt('请输入您的年龄:'); // +'1'>1
    console.log(userAge); //1  

         4)复合赋值运算符

  • 概念:变量自身与数据运算结果赋值给变量本身
  • 复合赋值运算符:是针对变量来做操作的,不能直接对直接变量做操作
    let x=1;
    x +=5;  //6

         5)+=的作用

  • +=可以对字符串变量起到 连接的作用
let str ='my name is  pink';
str +=' how are you';
console.log(str);//my name is xiaoming how are you 

 有点多了,明天再写排错题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android开发实习生面试通常包括以下几个方面: 1. 了解Android平台:我会介绍Android操作系统的一些基础知识,例如它的架构和组件、常用的开发工具和环境等等。同时,我也会介绍一些最新的Android版本和特性。 2. 编程经验:我会详细介绍我在开发Android应用方面的经验和能力。这可能包括我曾经开发的项目,涉及的技术栈和我在这个过程中遇到的挑战和解决方案。 3. Java编程能力:我会讨论我对Java编程语言的熟悉程度,包括我对面向对象编程的理解,以及我在Java中使用常用库和框架的经验。 4. Android应用构架和设计模式:我会说明我对MVC、MVP或MVVM等设计模式的理解,并能够解释它们在Android应用开发中的作用。 5. 常用的Android库和框架:我将谈论我对常用的Android库和框架,如Retrofit、Glide和Dagger等的熟悉程度,并能够解释它们的工作原理和优势。 6. 排错和调试能力:我会分享我如何定位和解决在Android开发过程中出现的常见问和错误。我会提及我在调试工具和技术方面的经验,如Logcat、Android Studio的调试模式等等。 7. 学习和自我发展:我会说明我不仅具备相关的技术和知识,而且持续学习和追求新的技术发展。我可能会提及我阅读的一些相关书籍或参加的技术研讨会等。 在面试时,我会充分准备这些问,展示我在Android开发方面的专业知识和实践经验。并且,我也会强调我对新技术的学习能力和持续提升的态度,以及我与团队合作和解决问的能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值