JS面试押题(20190707)

论坛 期权论坛 期权     
阿涛啦   2019-7-8 00:30   2254   0

为什么要写关于JS的面试题呢?是这样子的,因为我目前从事的工作和Javascript有关,因为有了JS才有了我的一口饭,我能说它不好吗?难道它不值得写吗?为什么又是写面试题呢?因为其他的暂时还没完全消化整理,暂时打通不了我的任督二脉哈哈,再者说,面试是你滚出学校,走向社会的第一步,说滚可能有些人觉得太残忍了,但现状就是这样,你要是面试都过不了,更不可能去见主管和hr小姐姐啥的了,迎面而来的可不就是一个滚吗?就我目前知道的,可能学校对这块并不是特别重视,因为大学就那样吧,读过的都晓得,不多说了,培训机构是会抓一下的。后面为什么又是押题呢?时隔近4年,我上一次听到这个词,还是我的中学时代,在今年4月份在一次机缘巧合,我又听到了这个词,我觉得我有点对不起它,因为大学我几乎不会押题,我自己都不太能确定我到底干了啥就读完了,变相的来说,我认为那些啥考研考公它就是押题,啥王江涛啊告诉你这个要考的,可能性很大你赶紧背吧,结果还真是的,所以押题很重要,毕业后我还是倡导一种“押题思维”的方式吧。故事就介绍到这里,下面我们进入正题。
不行,我还是要多废话几句,就是我走下来感觉就两条路,要么你就猛刷题,不一定是ACM的,但是ACM对智商的提高确实是有好处的,像PAT,Leetcode都是不错的;另外一个就是你有蛮丰富的项目实战经验,这个不是说你抱了一个腿参加了写上去就有加分的,你要讲的出所以然来,不然一定是减分,不减除非那是你舅或者你长得花一样。
好啦上题目,今天江涛哥哥给大家带来的是一道关于URL字符串解析的面试题,这个题目你在小厂不一定碰得到,反正据我所知,你去百度、有赞这些大厂有很大机率撞上这种类型的题目的,因为它考察的知识点真的是太好了,很看得出一个人的基础。这里就以我的档案库里百度的题目为砖头,我们一起来引玉吧。
面试题(ataolaGT_A_0001):编写一个queryURLParameter方法,实现将一个URL地址的后面的问号信息的传参部分,解析成键值对的方式显示。
   示例:
Input:阿涛啦      
  1. 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:
              
  1. [/code][code] {
复制代码
  1.   ie: 'utf-8',
复制代码
  1.   f: '3',
复制代码
  1.   rsv_bp: '1',
复制代码
  1.   rsv_idx: '1',
复制代码
  1.   tn: 'baidu',
复制代码
  1.   wd: '%E9%98%BF%E6%B6%9B%E5%95%A6',
复制代码
  1.   rsv_pq: 'c545708700033b4f',
复制代码
  1.   rsv_t: '9ad4IUKfnPSCyGMfTfPurz2hYEdv5gyeNTM3pwRuRKv0D9hKCB9HE8tZujc',
复制代码
  1.   rqlang: 'cn',
复制代码
  1.   rsv_enter: '1',
复制代码
  1.   rsv_sug3: '18',
复制代码
  1.   rsv_sug1: '9',
复制代码
  1.   rsv_sug7: '100',
复制代码
  1.   rsv_sug2: '0',
复制代码
  1.   prefixsug: '%25E9%2598%25BF%25E6%25B6%259B%25E5%2595%25A6',
复制代码
  1.   rsp: '2',
复制代码
  1.   inputT: '8604',
复制代码
  1.   rsv_sug4: '8603'
复制代码
  1. }
复制代码
知识点:首先我们打开浏览器,输入https://www.baidu.com,然后我们在输入框里去提交我们输入的内容,例如阿涛啦,这个时候,浏览器就会向百度的某个服务器上发送一个GET请求,那么我们试想后台百度服务器,接收到了我们传过去的这个GET请求,它又看不懂,这啥玩意,一坨屎一样的,这个时候它就需要它后台的service层的业务方法去处理这串东东,把它解析成键值对形式的JSON,这样处理起来就方便多了,Javascript的对象直接拿过来,用到哪个取哪个,这里只是简单地概括了下这样子的一个业务场景,把生活中的人们的行为方式用计算机语言去描述。
考点:它这边考了些啥知识点呢,首先那一坨东西,它是一个字符串,那么就要涉及到一些ES5、ES6的基础API,然后第二个就是一个Javascript中Object对象的理解,除了Baba.son这种写法,很多时候在操作Object对象,Baba[son]也是经常用到的,这其中肯定会涉及到拆除来的东西的遍历,那么很容易联想到数组了,最后就是一个分类讨论,我要是啥都没输入提交你能不能介绍?学有余力的其实还是可以从正则的方法入手,代码会短很多,这里就放以拆分字符串,然后把它转换成数组进行遍历,最后返回我们想要的结果的思路代码。
  1. /**
复制代码
  1. * From: Baidu Interview
复制代码
  1. * 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"
复制代码
  1. * Output: " {
复制代码
  1.   ie: 'utf-8',
复制代码
  1.   f: '3',
复制代码
  1.   rsv_bp: '1',
复制代码
  1.   rsv_idx: '1',
复制代码
  1.   tn: 'baidu',
复制代码
  1.   wd: '%E9%98%BF%E6%B6%9B%E5%95%A6',
复制代码
  1.   rsv_pq: 'c545708700033b4f',
复制代码
  1.   rsv_t: '9ad4IUKfnPSCyGMfTfPurz2hYEdv5gyeNTM3pwRuRKv0D9hKCB9HE8tZujc',
复制代码
  1.   rqlang: 'cn',
复制代码
  1.   rsv_enter: '1',
复制代码
  1.   rsv_sug3: '18',
复制代码
  1.   rsv_sug1: '9',
复制代码
  1.   rsv_sug7: '100',
复制代码
  1.   rsv_sug2: '0',
复制代码
  1.   prefixsug: '%25E9%2598%25BF%25E6%25B6%259B%25E5%2595%25A6',
复制代码
  1.   rsp: '2',
复制代码
  1.   inputT: '8604',
复制代码
  1.   rsv_sug4: '8603'
复制代码
  1. }"
复制代码
  1. * Description: "将输入的url字符串进行解析并以JSON格式输出"
复制代码
  1. * By zjt613
复制代码
  1. */
复制代码
  1. [/code][code]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';
复制代码
  1. [/code][code]/**
复制代码
  1. * @description  字符串拆分法: 利用字符串方法,把地址进行拆分,最后获取需要的信息
复制代码
  1. * @method queryURLParameterByStr
复制代码
  1. * @for run
复制代码
  1. * @param {string} url 传入的url地址
复制代码
  1. * @return {object} res 返回的结果
复制代码
  1. */
复制代码
  1. [/code][code]function queryURLParameterByStr(url) {
复制代码
  1.   let res = {};
复制代码
  1.   if (url.indexOf('?') == -1) {
复制代码
  1.     return res;
复制代码
  1.   } else {
复制代码
  1.     let ArrTmp = url.split('?');
复制代码
  1.     let ArrTmp2 = ArrTmp[1].split('&');
复制代码
  1.     Array.from(ArrTmp2, item => {
复制代码
  1.       let cur = item.split('=');
复制代码
  1.       res[cur[0]] = cur[1];
复制代码
  1.     })
复制代码
  1.     return res;
复制代码
  1.   }
复制代码
  1. };
复制代码
  1. /**
复制代码
  1. * Test: 测试
复制代码
  1. */
复制代码
  1. [/code][code]let result = queryURLParameterByStr(url);
复制代码
  1. console.log("result: ", result);
复制代码
至此,我们今天的题目就讲完了,下期再会!
如果您觉得江涛哥哥写的文章对您有用或者对您的朋友也有用,麻烦您动动小指头,推荐一下呗,谢谢啦!


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP