每天进步一点点:4.10

大家好,我是梅巴哥er。今天又是元气满满的一天哦~


1,问:js垃圾回收机制

答:

  • 垃圾
    • 变量没有被引用,并没有清除,这个变量就是垃圾。
    • 例外:如果几个变量互相引用,形成一个环,而且访问不到它们,这些变量也会被当作垃圾清除掉。
  • 垃圾回收
    • 引用计数法
      • 从声明变量时,就记录变量被引用次数。如果变量引用次数是0,则会被清除
    • 标记清除法
      • 标记阶段:从根节点出发,把所有活动对象及其及对象,都打上标记
      • 清除阶段:遍历堆,把未被标记的对象,清除掉
    • 手动清除
      • 不再引用的变量,设置为null
2,问:http缓存

答:

  • 分类
    • 强缓存
    • 协商缓存
  • 怎么理解缓存机制?
    在这里插入图片描述
    • 浏览器相当于要开灯的你
    • 你要开灯,要先去看看灯座上有没有好用的灯(先查看缓存)。有就打开,没有,就下一步。
    • 灯座上的灯没打开(缓存中没找到),所以你让电工(服务器)来给看看灯泡有没有坏(失效)。
    • 电工说,你家灯坏了,不能用了。
    • 然后你说,电工你给我拿个灯来吧(向服务器请求数据)。
  • 强缓存用到的属性
    • Expires:一个确定的过期时间。如果直接把客户端时间改掉,会影响缓存。
    • Cache-Control:max-Age:一个相对的过期时间,单位是秒。更改客户端时间,不会影响缓存时间。比Expires优先级高。
      • 另一个值:no-cache :意思是强制所有缓存了该响应的用户,在使用已缓存的数据前,发送带验证器的请求到服务器。不是字面意思上的不缓存。
      • 再一个值:no-store:真正意义上的禁止缓存,每次请求都要向服务器重新获取数据。
  • 协商缓存用到的属性
    • Last-Modify/If-Modify-Sinc:前者是第一次请求返回到响应头的属性,后者是后续请求显示在请求头的属性
    • ETag/If-None-Match:同样是一个在响应头,一个在请求头。
  • 用户的操作对缓存的影响
    在这里插入图片描述
3,问:排序算法有哪些

答:

  • 冒泡排序:比较相邻元素,然后交换位置
  • 选择排序:先找出一最小值放在1号位,然后在剩下的数字中再找出最小值,放在2号位。以此类推。
  • 插入排序:比如无序数列[4,3,6,2,9,5]。把[4]和[3,6,2,9,5]分开。把3拿出来,和4比较,3比4小,然后把3插入到4的前面,然后两个数列变成了[3,4]和[6,2,9,5]。继续拿出6和[3,4]的数字比较,6比4大,所以6插入到4的后面。两个数列就变成了[3,4,6]和[2,9,5]。继续拿出2和[3,4,6]中的数字比较,2最小,所以2插入到3的前面。依次类推,最后得出排序结果[2,3,4,5,6,9]
  • 希尔排序。改进版的插入排序。核心在于分组数。
  • 快速排序:核心是基准数的真实位置就是low和high重叠的位置
4,问:redux数据流,react-redux,图解一下

答:

  • 下面这个是redux的:
    (用画图工具画的,有点别扭,凑合看吧23333)
    在这里插入图片描述
  • 带上react-redux,就是下面这样了:
    在这里插入图片描述
5,问:connect是怎么实现的

答:

  • connect(reducer管理的状态, action函数)(连接的组件)
6,问:js字符串的常用api

答:

var str=' abca '
// str的元素个数
console.log(str.length) // 6
// 查找某字符首次出现的下标,没有则返回-1
console.log(str.indexOf('a'), str.indexOf('d')) // 1 -1
// 查找某字符最后一次出现的下标,没有则返回-1
console.log(str.lastIndexOf('a'), str.lastIndexOf('d')) // 4, -1
// 按下标截取字符 slice(start, end), substring(start, end)
console.log(str.slice(1, 3), str.substring(1, 3)) // ab ab
// 按个数截取字符substr(start, length)
console.log(str.substr(1, 2)) // ab
// 替换replace('b', 'd')
console.log(str.replace('b', 'd')) //  ' adca ' 
// 去除两端空格 ie8及以下版本不支持trim()
console.log(str.trim()) // 'abca'
// 转换成数组
console.log(str.split('')) // [ ' ', 'a', 'b', 'c', 'a', ' ' ]
7,问:箭头函数有原型吗?

答:

var fn = () => {}
console.log(fn.prototype) // undefined
console.log(fn.__proto__) // [Function]

function fn1(){}
console.log(fn1.prototype) // fn1 {}
console.log(fn1.__proto__) // [Function]
8,问:setTimeout的执行机制,他在设定的秒数后就一定能执行吗

答:

  • 不一定执行。
// 举个例子
setTimeout(function() {
	console.log("计时器执行")
}, 0)
for (var i = 0; i < 1000000000; i++) {
	if (i == 999999999) {
		console.log(i);
	}
}
  • 上面的代码,虽然我们给定时器设置的时间是0ms后执行,但是实际上代码在等待大概1s多后才输出结果。
  • 原因是js的执行机制。for是同步任务,进入主线程先执行,待for执行完后,才会让定时器从等待队列进入到主线程执行。
9,问:BOM是什么

答:

  • BOM即浏览器对象模型(browser object model),主要作用对象就是window。

  • 包含哪些操作方法?

    • location对象
    重载:location.reload();
    跳转页面:location.href
             location.assign()
             location.replace()
             区别:location.href除了跳转页面,还可以获取当前页面的网址,有历史记录;
                  location.assign()只能跳转页面,有历史记录;
                   location.replace()替换当前页面,也是跳转页面,没有历史记录。
    location.hash:获取地址栏中#后面的内容,也就是锚点标记名
    location.search:获取地址栏中?后面的内容,?号后面一般是访问地址的参数
    location.pathname:地址栏中文件路径和名称;
    location.port:地址栏中的端口号;
    location.protocol:地址栏中的协议;
    location.hostname:地址栏中的域名;
    
    
    • history对象
    history.back():回退
    history.forward():前进
    history.go(1):跳转到第几个负数是回退,正式是前进,0是刷新页面;
    
    
    • navigator对象
    用户浏览器信息:navigator.userAgent;
    

以上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值