- 【周刊-1】三年大厂面试官-面试题精选及答案
前言 在阿里和腾讯工作了6年,当了3年的前端面试官,把期间我和我的同事常问的面试题和答案汇总在我 Github 的 Weekly-FE-Interview 中。希望对大家有所帮助。 如果你在bat面试的时候遇到了什么不懂的问题,欢迎给我提issue,我会把题目汇总并将面试要点和答案写好放在周刊里,大家一起共同进步和成长,助力大家进入自己理想的企业。 项目地址是:https://github.com/airuikun/Weekly-FE-Interview 常见面试题精选 以下是十道大厂一面的时候常见的面试题,如果全部理解并且弄透,在一面或者电话面的时候基本上能中1~2题。小伙伴可以先不急着看答案,先自己尝试着思考一下和自己实现一下,然后再看答案。 第 1 题:http的状态码中,499是什么?如何出现499,如何排查跟解决 解析:第 1 题:http的状态码中,499是什么?如何出现499,如何排查跟解决 第 2 题:讲解一下HTTPS的工作原理 解析:第 2 题:讲解一下HTTPS的工作原理 第 3 题:讲解一下https对称加密和非对称加密。 解析:第 3 题:讲解一下https对称加密和非对称加密 第 4 题:如何遍历一个dom树 解析:第 4 题:如何遍历一个dom树 第 5 题:new操作符都做了什么 解析:第 5 题:new操作符都做了什么 第 6 题:手写代码,简单实现call 解析:第 6 题:手写代码,简单实现call 第 7 题:手写代码,简单实现apply 解析:第 7 题:手写代码,简单实现apply 第 8 题:手写代码,简单实现bind 解析:第 8 题:手写代码,简单实现bind 第 9 题: 简单实现项目代码按需加载,例如import { Button } from ‘antd’,打包的时候只打包button 解析:第 9 题: 简单实现项目代码按需加载,例如import { Button } from ‘antd’,打包的时候只打包button 第 10 题:简单手写实现promise 解析:第 10 题:简单手写实现promise 结语 本人还写了一些前端进阶知识的文章,如果觉得不错可以点个star。 blog项目地址是:https://github.com/airuikun/blog 我是小蝌蚪,腾讯高级前端工程师,跟着我一起每周攻克几个前端技术难点。希望在小伙伴前端进阶的路上有所帮助,助力大家进入自己理想的企业。
2019-04-08 - 驾校答题小程序实战全过程--6语音读题
一、目标: 为了更方便查看题目,我们加入读题功能。语音读题主要应用在智能客服机器人、电子有声读物、智慧教育等领域,了解到目前市场语音合成技术,主要有讯飞语音、百度语音、腾讯语音这几家大厂。 都支持男女生声,讯飞价格比较贵,这里发现腾讯语音合成暂时不收费。 腾讯云的语言合成介绍 https://cloud.tencent.com/product/tts#scenarios 摘选:语音合成(Text To Speech)满足已知文本生成语音的需求,打通人机交互闭环。多种音色选择,支持自定义音量、语速,为企业客户提供定制自有领域词库和个性化发音人服务,让发音更自然、更专业、更符合场景需求。语音合成广泛应用于语音导航、有声读物、标准发音领读、自动新闻播报等场景。 本以为这些API厂商,直接提供了API接口,小程序里请求就好了,现实不是的,做法跟做微信支付有点类似。必须自己实现一套服务端API,服务端实现接口加密等操作。 这几家都需要这样做,这里首先把需要的资料准备好。 开发语言 这里选Golang,官方有服务端SDK 腾讯云API密匙,自己在控制台查看并记录 开发文档地址:https://cloud.tencent.com/document/api/441/18086 选一台服务器,备案好域名,配置好https 二、编写代码 1.路由 [代码]beego.Router("/1/textToVoice", &controllers.CloudController{}, "post:TextToVoice") [代码] 2.控制器 [代码]func (cloud *CloudController) TextToVoice() { body := cloud.Ctx.Input.CopyBody(beego.BConfig.MaxMemory) js, err := simplejson.NewJson(body) if err != nil { cloud.responseError(err) } //获取文本信息 text := js.Get("text").MustString() //判断不能为空 if strings.TrimSpace(text) == "" { cloud.responseError(fmt.Errorf("text param不能为空")) } //这里初始化大家传入自己腾讯云的key信息 client, _ := aai.NewClientWithSecretId( "id", "key", regions.Guangzhou) request := aai.NewTextToVoiceRequest() request.Text = common.StringPtr(text) request.SessionId = common.StringPtr(uuid.GetRandomString(16)) request.ModelType = common.Int64Ptr(-1) request.ModelType = common.Int64Ptr(-1) request.Speed = common.Float64Ptr(0.8) response, err := client.TextToVoice(request) // 处理异常 if _, ok := err.(*errors.TencentCloudSDKError); ok { cloud.responseError(fmt.Errorf("An API error has returned: %s", err)) } // 非SDK异常,直接失败。实际代码中可以加入其他的处理。 if err != nil { cloud.responseError(err) } // 打印返回的json字符串 var base64Str *string = response.Response.Audio fileByte, err := models.Base64Decode([]byte(*base64Str)) if err != nil { cloud.responseError(err) } fileName := uuid.GetRandomString(16) + "_" + fmt.Sprintf("%d", time.Now().Unix()) + ".wav" filePath := "/data/dyfsuda/app/restful/files/" + fileName url := "https://api.xxxx.com/files/" + fileName //把文件写入目录 if err = ioutil.WriteFile(filePath, fileByte, os.ModeAppend); err != nil { cloud.responseError(err) } if err = os.Chmod(filePath, 0777); err != nil { cloud.responseError(err) } //返回文件路径给客户端 cloud.Data["json"] = map[string]string{"url": url} cloud.ServeJSON() } [代码] 这里每次的题目可能都不一样,所以就不更新到数据库了,需要的时候,调用一次接口,如果接口收费,这里就把语音文件路径保存到数据表里,每次判断数据表是否存在语音就可以了。 目前开发这读题还是需要自己有服务器,如果现成的API调用就好了。 [图片] 三、开发回顾: 1.驾校答题小程序实战全过程——1.数据库设计 https://developers.weixin.qq.com/community/develop/article/doc/0004e45f4f49b825584824d4550813 2.驾校答题小程序实战全过程——2.答题功能 https://developers.weixin.qq.com/community/develop/article/doc/0000c6b40542084c6048ef64751013 3.驾校答题小程序实战全过程——3.顺序练习和模拟考试 https://developers.weixin.qq.com/community/develop/article/doc/0004e48f94cb10c18c480a0b751c13 4.驾校答题小程序实战全过程——4.题目采集与测试 https://developers.weixin.qq.com/community/develop/article/doc/000a0657c641c8719348a291350013 5.驾校答题小程序实战全过程——5.数据导入 https://developers.weixin.qq.com/community/develop/article/doc/00066a37280d205a97581cd0151413 6.驾校答题小程序实战全过程——6.语音读题 该项目目前已经上线,需要源码的朋友可以找我沟通,QQ:2967459363
2019-04-04