前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS面试押题(20190707)

JS面试押题(20190707)

作者头像
江涛学编程
发布2023-05-27 10:51:24
1620
发布2023-05-27 10:51:24
举报
文章被收录于专栏:江涛的博客江涛的博客
为什么要写关于JS的面试题呢?是这样子的,因为我目前从事的工作和Javascript有关,因为有了JS才有了我的一口饭,我能说它不好吗?难道它不值得写吗?为什么又是写面试题呢?因为其他的暂时还没完全消化整理,暂时打通不了我的任督二脉哈哈,再者说,面试是你滚出学校,走向社会的第一步,说滚可能有些人觉得太残忍了,但现状就是这样,你要是面试都过不了,更不可能去见主管和hr小姐姐啥的了,迎面而来的可不就是一个滚吗?就我目前知道的,可能学校对这块并不是特别重视,因为大学就那样吧,读过的都晓得,不多说了,培训机构是会抓一下的。后面为什么又是押题呢?时隔近4年,我上一次听到这个词,还是我的中学时代,在今年4月份在一次机缘巧合,我又听到了这个词,我觉得我有点对不起它,因为大学我几乎不会押题,我自己都不太能确定我到底干了啥就读完了,变相的来说,我认为那些啥考研考公它就是押题,啥王江涛啊告诉你这个要考的,可能性很大你赶紧背吧,结果还真是的,所以押题很重要,毕业后我还是倡导一种“押题思维”的方式吧。故事就介绍到这里,下面我们进入正题。

不行,我还是要多废话几句,就是我走下来感觉就两条路,要么你就猛刷题,不一定是ACM的,但是ACM对智商的提高确实是有好处的,像PAT,Leetcode都是不错的;另外一个就是你有蛮丰富的项目实战经验,这个不是说你抱了一个腿参加了写上去就有加分的,你要讲的出所以然来,不然一定是减分,不减除非那是你舅或者你长得花一样。

好啦上题目,今天江涛哥哥给大家带来的是一道关于URL字符串解析的面试题,这个题目你在小厂不一定碰得到,反正据我所知,你去百度、有赞这些大厂有很大机率撞上这种类型的题目的,因为它考察的知识点真的是太好了,很看得出一个人的基础。这里就以我的档案库里百度的题目为砖头,我们一起来引玉吧。

面试题(ataolaGT_A_0001):编写一个queryURLParameter方法,实现将一个URL地址的后面的问号信息的传参部分,解析成键值对的方式显示。

示例:

Input:阿涛啦

https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E9%98%BF%E6%B6%9B%E5%95%A6&rsv_pq=c545708700033b4f&rsv_t=9ad4IUKfnPSCyGMfTfPurz2hYEdv5gyeNTM3pwRuRKv0D9hKCB9HE8tZujc&rqlang=cn&rsv_enter=1&rsv_sug3=18&rsv_sug1=9&rsv_sug7=100&rsv_sug2=0&prefixsug=%25E9%2598%25BF%25E6%25B6%259B%25E5%2595%25A6&rsp=2&inputT=8604&rsv_sug4=8603

Output:


 {
  ie: 'utf-8',
  f: '3',
  rsv_bp: '1',
  rsv_idx: '1',
  tn: 'baidu',
  wd: '%E9%98%BF%E6%B6%9B%E5%95%A6',
  rsv_pq: 'c545708700033b4f',
  rsv_t: '9ad4IUKfnPSCyGMfTfPurz2hYEdv5gyeNTM3pwRuRKv0D9hKCB9HE8tZujc',
  rqlang: 'cn',
  rsv_enter: '1',
  rsv_sug3: '18',
  rsv_sug1: '9',
  rsv_sug7: '100',
  rsv_sug2: '0',
  prefixsug: '%25E9%2598%25BF%25E6%25B6%259B%25E5%2595%25A6',
  rsp: '2',
  inputT: '8604',
  rsv_sug4: '8603'
}

知识点:首先我们打开浏览器,输入https://www.baidu.com,然后我们在输入框里去提交我们输入的内容,例如阿涛啦,这个时候,浏览器就会向百度的某个服务器上发送一个GET请求,那么我们试想后台百度服务器,接收到了我们传过去的这个GET请求,它又看不懂,这啥玩意,一坨屎一样的,这个时候它就需要它后台的service层的业务方法去处理这串东东,把它解析成键值对形式的JSON,这样处理起来就方便多了,Javascript的对象直接拿过来,用到哪个取哪个,这里只是简单地概括了下这样子的一个业务场景,把生活中的人们的行为方式用计算机语言去描述。

考点:它这边考了些啥知识点呢,首先那一坨东西,它是一个字符串,那么就要涉及到一些ES5、ES6的基础API,然后第二个就是一个Javascript中Object对象的理解,除了Baba.son这种写法,很多时候在操作Object对象,Baba[son]也是经常用到的,这其中肯定会涉及到拆除来的东西的遍历,那么很容易联想到数组了,最后就是一个分类讨论,我要是啥都没输入提交你能不能介绍?学有余力的其实还是可以从正则的方法入手,代码会短很多,这里就放以拆分字符串,然后把它转换成数组进行遍历,最后返回我们想要的结果的思路代码。

/**
 * From: Baidu Interview
 * Input: "https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E9%98%BF%E6%B6%9B%E5%95%A6&rsv_pq=c545708700033b4f&rsv_t=9ad4IUKfnPSCyGMfTfPurz2hYEdv5gyeNTM3pwRuRKv0D9hKCB9HE8tZujc&rqlang=cn&rsv_enter=1&rsv_sug3=18&rsv_sug1=9&rsv_sug7=100&rsv_sug2=0&prefixsug=%25E9%2598%25BF%25E6%25B6%259B%25E5%2595%25A6&rsp=2&inputT=8604&rsv_sug4=8603"
 * Output: " {
  ie: 'utf-8',
  f: '3',
  rsv_bp: '1',
  rsv_idx: '1',
  tn: 'baidu',
  wd: '%E9%98%BF%E6%B6%9B%E5%95%A6',
  rsv_pq: 'c545708700033b4f',
  rsv_t: '9ad4IUKfnPSCyGMfTfPurz2hYEdv5gyeNTM3pwRuRKv0D9hKCB9HE8tZujc',
  rqlang: 'cn',
  rsv_enter: '1',
  rsv_sug3: '18',
  rsv_sug1: '9',
  rsv_sug7: '100',
  rsv_sug2: '0',
  prefixsug: '%25E9%2598%25BF%25E6%25B6%259B%25E5%2595%25A6',
  rsp: '2',
  inputT: '8604',
  rsv_sug4: '8603'
}"
 * Description: "将输入的url字符串进行解析并以JSON格式输出"
 * By zjt613
 */

let url = 'https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E9%98%BF%E6%B6%9B%E5%95%A6&rsv_pq=c545708700033b4f&rsv_t=9ad4IUKfnPSCyGMfTfPurz2hYEdv5gyeNTM3pwRuRKv0D9hKCB9HE8tZujc&rqlang=cn&rsv_enter=1&rsv_sug3=18&rsv_sug1=9&rsv_sug7=100&rsv_sug2=0&prefixsug=%25E9%2598%25BF%25E6%25B6%259B%25E5%2595%25A6&rsp=2&inputT=8604&rsv_sug4=8603';

/**
 * @description  字符串拆分法: 利用字符串方法,把地址进行拆分,最后获取需要的信息
 * @method queryURLParameterByStr
 * @for run
 * @param {string} url 传入的url地址
 * @return {object} res 返回的结果
 */

function queryURLParameterByStr(url) {
  let res = {};
  if (url.indexOf('?') == -1) {
    return res;
  } else {
    let ArrTmp = url.split('?');
    let ArrTmp2 = ArrTmp[1].split('&');
    Array.from(ArrTmp2, item => {
      let cur = item.split('=');
      res[cur[0]] = cur[1];
    })
    return res;
  }
};
/**
 * Test: 测试
 */

let result = queryURLParameterByStr(url);
console.log("result: ", result);

至此,我们今天的题目就讲完了,下期再会!

如果您觉得江涛哥哥写的文章对您有用或者对您的朋友也有用,麻烦您动动小指头,推荐一下呗,谢谢啦!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 江涛学编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档