2024年Web前端最全JSON数据格式及其在WEB开发中的应用,2024年最新京东前端三面问啥

最后

小编的一位同事在校期间连续三年参加ACM-ICPC竞赛。从参赛开始,原计划每天刷一道算法题,实际上每天有时候不止一题,一年最终完成了 600+:

凭借三年刷题经验,他在校招中很快拿到了各大公司的offer。

入职前,他把他的刷题经验总结成1121页PDF书籍,作为礼物赠送给他的学弟学妹,希望同学们都能在最短时间内掌握校招常见的算法及解题思路。

整本书,我仔细看了一遍,作者非常细心地将常见核心算法题和汇总题拆分为4个章节。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

而对于有时间的同学,作者还给出了他结合众多数据结构算法书籍,挑选出的一千多道题的解题思路和方法,以供有需要的同学慢慢研究。

  • 不能有注释,行注释与块注释都不可以;

  • 字符串中不能有TAB,使用”\t”表示;

  • 对象中的所有的key都必须添加双引号,所有的字符串类型的value也都必须是双引号格式的;

json与js
  • 因为JSON源于JS,所以JSON在JS中具有得天独厚的优势;

  • 因为JS是web环境下B端开发语言的不二之选,所以JSON在WEB中大行其道;

  • 优势:

1. JS的语法子集,合法的JSON代码在JS中也是合法的JS代码,内嵌JSON传输随处可见,jsonp的原理便是基于此前提的;

2. 解析JSON数据的成本足够小,eval,json.js, JSON.parse(str)

3. 各种封装库直接透传json格式,导致json诞生之后迅速取代xml在数据传输中的地位;

4. JSON序列化在JS中也非常容易,json.js,JSON.stringify(json/*, null, "\t"*/);

eval解析json问题:

var str = “{“name”:“value”}”;

// 方法1

var json = eval(“(” + str + “)”); // 存在诸如 XSS 攻击风险

// 方法2

var json;

eval("json = " + str);

JSON在其他语言中的序列化问题
  • 这里不说解析(反序列化),只要是”合法的”JSON数据,解析库使用的正确,并且二者相匹配,不应该有问题;

  • 关于格式化问题:格式化是为了方便调试,生产环境中,应避免使用;

  • nodejs: 和浏览器中基本一致;

  • PHP: json_encode,json_decode(PHP 5 >= 5.2.0, PECL json >= 1.2.0)

  • Ruby: @json = @data.to_json, @data = JSON.parse(json)

  • Java:

  • JSON-java: JSONXXX.fromObject(str), obj.toString()

JSONObject jsonObj = JSONObject.fromObject(jsonString);

JSONArray jsonArr = JSONArray.fromObject(jsonString);

  • google-gson: gson.toJson, gson.fromJson
JSON与其他语言之间的类型对应关系

| json | js | php | ruby | java |

| — | — | — | — | — |

| boolean | boolean | boolean | true,false | boolean |

| number | number | integer, float | Integer, Float | int, float, double |

| string | string | string | String | String |

| array | Array | Array | Array | [] |

| object | Object | Array | Hash | Object(from class) |

| null | null | null | Nil | null |

数据类型问题为何如此重要?
  • 弱类型语言不代表没有类型

  • 最新的JS引擎(V8等),约束类型有利于性能

  • 让数据传输协议无歧义,简化约定

  • 让两端的代码处理逻辑简化,避免各种异常的问题

  • 严格遵守类型约定,可以规避很多容易被忽视的问题

  • 想一想各种二进制的数据传输协议,类型不是它们特有的

严格来说,JSON不是JavaScript的子集;
  • JSON: 不要误会,我真的不是JavaScript的子集

  • \u2028“,LINE SEPARATOR,下面的字符被认为是行终止符:

  • \u000A - Line Feed

  • \u000D - Carriage Return

  • \u2028 - Line Separator

  • \u2029 - Paragraph separator

  • 正因为这两个不可见的Unicode字符,JSON便不是JavaScript的一个子集了,就差了这么一点点;

JSON的高阶应用
  • JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。

  • MongoDB底层存储为JSON格式;

  • JSONiq是个构建在XQuery之上的新型查询语言。类似于SQL或是LINQ,它提供了诸如let、for、where、group by与select等语法支持概念;

  • JSONSelect http://jsonselect.org JSONSelect是一个实验性的JSON选择语言, 她很容易从复杂的JSON文档中访问数据, 看上去就跟CSS一样.

Vue

  • 什么是MVVM?

  • mvvm和mvc区别?它和其它框架(jquery)的区别是什么?哪些场景适合?

  • 组件之间的传值?

  • Vue 双向绑定原理

  • 描述下 vue 从初始化页面–修改数据–刷新页面 UI 的过程?

  • 虚拟 DOM 实现原理

  • Vue 中 key 值的作用?

  • Vue 的生命周期

  • Vue 组件间通信有哪些方式?

  • vue 中怎么重置 data?

  • 组件中写 name 选项有什么作用?

  • Vue 的 nextTick 的原理是什么?

  • Vuex 有哪几种属性?

    开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  • 12
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值