Js面试题(总结)持续取经更新……

目录

1、面向对象的特征有哪些方面

2、string是最基本的数据类型吗?

3、float f=3.4是否正确

4、&和&&的区别

5、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

6、switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?

7、用最有效率的方法计算2乘以8?

8、数组有没有length()方法?String有没有length()方法?

9、构造器(constructor)是否可被重写(override)?

10、是否可以继承String类?

11.GC是什么?为什么要有GC?

12.String s = new String(“xyz”);创建了几个字符串对象?

13.Java 中的final关键字有哪些用法?

14.数据类型之间的转换:- 如何将字符串转换为基本数据类型?- 如何将基本数据类型转换为字符串

15.如何实现字符串的反转及替换?

16.如何解决跨域

17.数组(array)方法

18.js数组和对象的遍历方式

19.==和===的区别

20.关于闭包

21.let和const的区别是什么

22.垃圾回收机制

23.数组去重的几种方法

24.父子组件传参

25.HTML5的特性

26.页面之间是怎么传参数的

27.如何在浏览器查看和清楚localstorage保存的数据

 28.display:none  和visibility:hidden的区别

29.css的继承选择器 .one ,two 和.one>.two的区别?两个同级类选择器连着一起写有什么作用

30.如何实现水平垂直居中

31.CSS的几种居中方式

32.fixed和absolute的区别

33.css有哪些选择符?可继承的属性有哪些?css3新增的伪元素有哪些?css优先级的计算

34.css3的新特性

text-decoration

颜色

 35. 移入图片让那个图片慢慢放大

36.call(),apply(),bind()的区别

37.const的用法

38.Utf-8编码汉字占多少个字节

39.关于ajax

40.js对数组的操作,包括向数组中插入删除数据

41.promise是什么?能解决什么问题?

 42.编程:连接两个数组并返回?

43.冒泡排序

​编辑

44.ES6新特性

45.js对数组有哪些操作方法

46.js的选择器

47.js的数据类型

 48.减少页面加载时间的方法

49.怎么理解模块化开发

 50.什么是闭包,有什么作用?

51.手机号的正则表达式(以1开头的11位数字)

1、面向对象的特征有哪些方面

--抽象:抽象是将一类对象的共同特征总结沟造出来的过程,包括数据抽象和行为抽象两方面,抽象只关注对象有哪些行为或者属性,并不关注这些行为的细节是什么。

--继承:继承是从已有类型得到继承信息创建新类的过程,提供继承的类叫父类(超类,基类)、得到继承的类叫子类(派生类)

--封装:通常认为封装是把数据的操作和操作数据的方法绑定起来,对数据的访问只能童工已经定义的接口,可以说封装就是隐藏一切可以隐藏的东西,只向外界提供最简单的编程接口。举例:可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。

--多态性:多态性是指允许不同子类型的对象对同一消息做出的不同的响应,简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情,实现多态需要做两件事:1、方法重写(子类继承父类并重写父类中的方法)2、对象造型(父类引用子类型对象,这样同样的引用调用的方法就会根据子类型的不同而表现出不同的行为)

2、string是最基本的数据类型吗?

答:不是,Java中的基本数据类型有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive)和枚举类型(enumeration type),剩下的都是引用类型(reference type)

3、float f=3.4是否正确

答:不正确,3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down--casting,也称之为窄化)会造成精度损失,因此需要强制转换float f=(float)3.4;或者写成float f=3.4F

4、&和&&的区别

虽然二者都要求运算符左右两端的布尔值都是true整个表达式的值才是true。&&之所以称为短路运算是因为,如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。很多时候我们可能都需要用&&而不是&,例如在验证用户登录时判定用户名不是null而且不是空字符串,应当写为:username != null &&!username.equals(“”),二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的equals比较,否则会产生NullPointerException异常。注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。

5、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?

Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加0.5然后进行下取整。

6、switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?

expr可以是byte、short、char、int、enum、String类型,但是long类型不能

7、用最有效率的方法计算2乘以8?

答: 2 << 3(左移3位相当于乘以2的3次方,右移3位相当于除以2的3次方)

8、数组有没有length()方法?String有没有length()方法?

答:数组没有length()方法,有length 的属性。String 有length()方法。JavaScript中,获得字符串的长度是通过length属性得到的,这一点容易和Java混淆

9、构造器(constructor)是否可被重写(override)?

答:构造器不能被继承,因此不能被重写,但可以被重载。

10、是否可以继承String类?

答:String 类是final类,不可以被继承。

11.GC是什么?为什么要有GC?

答:GC是垃圾收集的意思,垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存

12.String s = new String(“xyz”);创建了几个字符串对象?

答:两个对象,一个是静态区的”xyz”,一个是用new创建在堆上的对象。

13.Java 中的final关键字有哪些用法?

(1)修饰类:表示该类不能被继承;(2)修饰方法:表示方法不能被重写;(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。

14.数据类型之间的转换:
- 如何将字符串转换为基本数据类型?
- 如何将基本数据类型转换为字符串

答: 
- 调用基本数据类型对应的包装类中的方法parseXXX(String)或valueOf(String)即可返回相应基本类型; 

- 一种方法是将基本数据类型与空字符串(”")连接(+)即可获得其所对应的字符串;另一种方法是调用String 类中的valueOf()方法返回相应字符串

15.如何实现字符串的反转及替换?

答:方法很多,可以自己写实现也可以使用String或StringBuffer/StringBuilder中的方法

有一道很常见的面试题是用递归实现字符串反转,代码如下所示:

16.如何解决跨域

1、jsonp跨域

2.document.domain+iframe跨域

3.node js中间件代理跨域

4.后端在头部信息里面设置安全域名

17.数组(array)方法

map:遍历数组,返回回调返回值组成的新数组

foeeach:无法break,可以用try或者catch中throw new error来停止

filter:过滤

some:有一项true,则整体返回true

every:有一项返回false,则整体返回false

join:通过置顶连接符生成字符串

push / pop:末尾推入和弹出,改变原数组,返回推入/弹出项

unshift / shift:头部推入和弹出,改变原数组,返回操作项

sort(fn) /  reverse:排序与反转,改变原数组

concat:连接数组,不影响数组,浅拷贝

slice(start,end):返回截断后的新数组,不改变原数组

splice(start,number,value):返回删除数组组成的数组,value插入项

indexof / lastIndexOf(value,fromindex):查找数组项,返回对应的下标

reduce / reduceRignt(fn(prev,cur),defaultprev):两两执行,prev为上次化简函数的ret

18.js数组和对象的遍历方式

1.for in

2.for

3.foreach

4.for-fof

19.==和===的区别

==是非常严格意义上的相等,值相等就相等

===是严格意义上的相等,回你比较两边的数据类型和值的大小

值的引用地址都相等才相等

20.关于闭包

闭包就是能够读取到其他函数内部变量的函数

闭包基本上就是一个函数内部返回的一个函数

优点:

1.可以读取函数内部的变量

2.将变量始终保持在内存中

3.可以封装对象的私有属性和私有方法

缺点:

比较耗费内存,使用不当会造成内存溢出的问题

21.let和const的区别是什么

let命令不存在变量提升,如果在let前使用,会导致报错

如果块区中存在let和const命令,就会形成封闭作用域

不允许重复声明

const定义的是常量,不能修改,但是如果定义的是对象,可以修改对象内部的数据

22.垃圾回收机制

什么是垃圾回收

垃圾回收:古茗司仪 就是释放占用的空间,防止内存泄露

哪些需要回收对象是否可以被回收的两种经典算法:引用计数法和可达性分析算法

什么时候回收:堆的新生代,老年代,永久代的垃圾回收时机,minorGC和FullGC

如何回收三种经典垃圾回收算法-标记清除算法,复制算法,标记正路算法 及分带收集算法

23.数组去重的几种方法

1.定义一个新的数组,并放入原数组的第一个元素,然后将元素组一一和新数组的元素进行对比,若不同则存放在新数组中

2.先将原数组排序,在与相邻的进行比较,如果不同则存入新数组中

 3.利用ES6的set方法

function unique(arr){ 

        set数据结构 他类似于数组 其他成员的值都是唯一的

        return Array.from(new Set(arr));

        利用Array.from 将set结构转化为数组

}

console.log(unique([1,1,1,2,2,3,3,4,5,6,7,7]))

输出结果为:[1,2,3,4,5,6,7,]

24.父子组件传参

父传子-props 

在子组件中 使用选项props来声明需要从父级接收到的数据

props的值有两种方式

方式一:字符串数组,数组中的字符串就是传递时的名称

方式二:对象, 对象可以设置传递时候的类型,也可以设置默认值等

当需要对props进行类型验证等验证时,需要对象写法 

验证支持的数据类型一般有以下几种

string-Number-Boolean-Array-Object-Date-Function-Symbol

25.HTML5的特性

1.语言化标签

通过语言化标签 可以让页面又更加完善的结构 让页面的元素有含义,同时也利于被搜索殷勤解析

有利于SEO 主要标签包括下面几种

header- 表示文档的头部区域

footr- 表示标签的尾部区域

nav-表示文档导航的部分

section- 表示文档的某一节

article- 表示文章

main- 表示文档主要的内容区域

2.增强型表单

可以通过input的type属性是定类型是number还是data或者url,同时还添加了placeholde和required等表单属性

3.媒体元素

新增了audio和video两个媒体相关标签,可以让开发人员不必依赖任何插件就能在网页中嵌入浏览器的音频 和视频内容

26.页面之间是怎么传参数的

1.cookie传值

缺点:cookie存储是需要服务器支持,本地直接运行静态文件是实现不了的,cookie能够存储数据到客户端的磁盘中,特定的网页之间是可以共享cookie中的数据

2.LocalStorage和SessionStorage传值

优点:支持本地静态文件,在HTML5中 新加入了一个localstorage特性,。这个特性主要是用来作为本地存储来使用的  解决了cookie存储空间不足的问题 ,localstorage 中一般的浏览器支持的是5M 的大小 这个在不同的浏览器中localstorage会有所不同,比方类似的cookie 将数据存在一个公共的地方 实现页面之间的传值

3.get方法  url传值

优点:速度快  cookie和localstorage都存在传输速度慢的情况 在一个页面写进去另一个页面读出来 有时候会读到空值,post提交表单跳转的方式就不行了  因为服务端并不处理这些请求参数 连达到客户端的机会都没有

27.如何在浏览器查看和清楚localstorage保存的数据

首先 按下F12打开开发者工具 

点击切换到application

点击localstorage 就可以查看保存过的数据信息

 如何清楚数据

点击上方的 clear storage 点击 clear site data 即可删除数据

 28.display:none  和visibility:hidden的区别

display:none  和visibility:hidden 区别不仅仅在与 display:none  隐藏后的元素不占用空间而visibility:hidden隐藏后元素依然占用空间  

visibility:hidden 具有继承性  给父元素设置visibility:hidden 子元素也会继承这个属性  但是如果给子元素设置visibility:hidden 则子元素又会显示出来   这个和display:none有这质的区别:父元素设置display:none; 子元素设置display:block;后子元素不会显示

并且visibility:hidden不会影响计时器的计数 ,就算是隐藏 计时器依旧运行  display:none 贼反之

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值