美文网首页
Tecent-preinterview

Tecent-preinterview

作者: 玉面小猿 | 来源:发表于2019-02-19 16:57 被阅读0次

    编程篇

    1. 五子棋程序,支持悔棋/撤销悔棋
    2. 页面内有一个正方形元素 A 以及一个待放置区域 B,实现对其拖拽和放下到 B 区域内,并且改变 B 区域背景颜色 (不可用 html5 原生事件)
      html 部分 https://paste.ubuntu.com/p/R4QSy8nFHC/
      js 部分 https://paste.ubuntu.com/p/wk54STQS3N/
    3. 实现超出整数存储范围的两个大正整数相加 function add(a, b)。注意:参数 a 和 b 以及函数的返回值都是字符串
      大数相加代码
      https://paste.ubuntu.com/p/QmNNVjSKkV/
      4.页面内有一个 input 输入框,实现在数组 arr 查询命中词和 autocomplete 效果
      事件监听方法;
      下拉框自动显示;父子级查找;

    基础理论篇

    1.子元素垂直水平居中;

    1. 数据类型, 对象与其他数据类型的区别;es6中的新数据类型;
      es6引入新的原始数据类型 Symbol,类似于字符串,但是不能和其他数据类型运算;
      可用于保证属性之间不会相互冲突
    shapeType.triangle等于哪个值并不重要,只要确保不会跟其他shapeType属性的值冲突即可。
    因此,这里就很适合改用 Symbol 值。
    shapeType.triangle的值设为一个 Symbol
    
    1. 网络安全了解; CSRF,XSS攻击;

    4.对计算机网络的理解;

    1. ajax发送请求的步骤;
      6.事件代理,事件委托;
      7.闭包场景,什么时候使用闭包;变量常驻内存带来的问题,如何避免闭包带来的问题;
      8.call 和 apply
    2. 在平时开发中,遇到过跨域的问题吗?如何处理跨域呢?
      9.1. 如何进行 CORS 跨域?需要什么条件?
      基本思想:使用自定义的http头部让浏览器和服务器进行沟通,从而决定响应成功或是失败;
      条件: 给请求附加一个自定义头部origin,如果服务器认为这个请求是可响应的,就在Access-Control-Allow-Origin 回发相同的源信息;如果没有该头部,或者有该头部但源信息不匹配,就驳回请求;
      IE 使用XDomainRequest()
      其他浏览器 使用 XMLHttpRequest()

    9.2 对服务器来说,返回 json 数据和 JSONP 数据有什么不一样?
    JSONP是包含在回调函数中的JSON
    callback({"name": "Nickolas" });
    JSONP最好来源于自己运维的web服务器,因为如果其他域不安全,很可能在响应中夹带一些恶意代码;
    在判断JSONP请求是否失败并不容易,需要使用定时器检测是都收到了响应。但由于每个用户的网速和带宽并不同,所以结果不是很理想;
    9.3 还有其他跨域方式吗?
    图像ping技术: 常用于跟踪用户点击页面或动态广告曝光次数;
    只能用于浏览器和服务器之间的单向通信,无法访问服务器的响应文本;
    只能发送Get请求;

    let img = new Image();
    let globalCount = 0;
    let faiInfoQueen = [];
    img.onload = () => { globalCount++};
    img.onerror = (err) => { failnfoQueen.push(err.message);}
    

    comet服务端推送技术
    实现方式: 长轮询和流

    长轮询
    长轮询
    长轮询过程:

    页面发起一个对服务器的请求,然后服务器已知保持连接打开,直到有数据可以发送。发送完数据,浏览器关闭连接,随即发起一个到服务器的新请求。

    使用流

    在页面整个生命周期只使用一个HTTP连接。浏览器向服务器发起请求,而服务器保持连接打开,周期性的向浏览器发送数据。

    web sockets

    新浏览器API,目标是在一个单独的持久连接上提供全双工、双向通信。在Javascript中创建web sockets之后,会有一个HTTP请求发送到浏览器以发起连接。取得服务器响应后将http协议交换为 web socket协议。必须使用支持这种协议的专门服务器,web sockets才能正常工作。
    ws适合于快速传输小数据,在移动设备上具有速度优势;
    10 盒子模型(W3C标准盒子模型/IE盒子模型)区别
    W3C标准盒子模型: height 即为content高度
    IE盒子模型:height 包含 content,padding,border

    1. 强类型语言有继承,在js中如何实现继承;
      11.1 使用prototype实现继承
      爸爸继承爷爷, 儿子继承爸爸
      爷爷的属性出现在儿子中 : son.prototype.prototype 为儿子从爷爷中继承而来的属性

    ⚠️ 使用原型注意不能使用对象字面量创建原型方法
    建一幢房子,已经具备了部分地基,但地基不够坚固,不满足扩展性要求;假设之前的地基是为草房临时准备,但现在要建大厦,如何利用之前的泥砖资源,并考虑目前的人力,时间成本,去把事情做成 ;

    1. 构造函数有一个 test() 方法,prototype 上也有一个 test(),这两个方法有区别吗?
      有区别。先访问构造函数的test(),构造函数test() 不存在访问prototype
    2. 页面性能优化方法;
      合理使用缓存;
      图片压缩;
      使用cdn,反向代理加速资源;
      纯色图片使用color代替,http请求整合;
      移动端
    3. 页面重排,重绘,区别;
    4. 浏览器如何知道资源是否需要缓存?
    5. http状态码含义;

    浏览器里面的事件都会按照一定的规则去传递,这个规则是什么?

    进阶总结篇

    1. vueJS,reactJS的优缺点,和jquery相比;
    2. 从url键入到页面显示经历了哪些过程;
      3.全球各地都要访问Tecent的服务器,你是怎么处理的?
    3. 排序算法复杂度;
      5.后端语言熟悉程度(Python总结下);
    4. 后端知识,数据库问题;

    项目优化

    1. 是否明文传输;
    2. 在项目中webpack的使用;

    相关文章

      网友评论

          本文标题:Tecent-preinterview

          本文链接:https://www.haomeiwen.com/subject/xvefyqtx.html