大家要的面试题来啦!

最近不少朋友在后台咨询前端

京东云面试的问题面试

 

“小编,大家面试通常都有几轮啊?”ajax

“小编,大家能够一个面试福利吗?算法

“小编,才毕业一年能够进大家公司吗?”sql

“小编,我就是想要面试题。数据库

 

emm……后端

 

做为贴心的小编😉😉浏览器

固然会尽可能知足你们的需求缓存

 

今天咱们挑了部分服务器

可能出如今 京东云 面试实战中的题目 和你们分享

Q:

用户访问京东网站时都经过浏览器输入网址而非IP地址,其中是借助DNS进行解析,在DNS解析中都会通过哪些过程?

A:

  1. 用户输入访问的域名,查询本机DNS缓存
  2. 若是本地缓存未命中则向LocalDNS进行查询
  3. 若是LocalDNS缓存则返回结果,若是缓存未命中则向ROOT DNS进行迭代
  4. 查询,得到域名的权威DNS地址
  5. LocalDNS向权威DNS查询域名的IP地址
  6. LocalDNS将IP地址返回给用户并缓存解析记录
  7. 用户使用IP地址进行访问

Q:

在京东专有云环境中,涉及到众多的系统,一个系统的响应快慢可能决定着产品性能的好坏,请问若是发现一个应用响应缓慢,如何优化?

A:

一个接口的响应缓慢多是多方面的缘由,具体分析以下:

  1. 前端接口调用:如接口自己调用速度较快,而到达前端的耗时较大,或是带宽较少,或是接口返回数据较多致使缓慢。可适量增长带宽,或使用cdn等方式加速静态资源。
  2. 应用程序方面:确保程序算法足够优化,无特耗时的算法处理,如算法无业务处理瓶颈,则可利用多线程将应用逻辑与数据处理并发处理,分而治之,加快响应速度。
  3. 数据库方面:查看数据库慢日志信息,肯定待优化的sql语句,查看sql语句是否使用索引,如未使用索引,可为其建立索引,如已使用索引,则优化索引结构(如是否符合三星索引等),减小sql语句查找数据的随机访问磁盘次数,加快数据的检索速度。其次可增长数据库内存大小,添加查询缓存等减小数据库层面的耗时。
  4. 缓存方面:对于经常使用数据信息也可将其存放到缓存中,如使用Redis、Memcache等中间件产品,减小程序对磁盘的访问,加快应用响应速度。
  5. 应用服务器性能方面:服务器的性能是有限的,当一台服务器资源被占用殆尽时,可适量横向扩展服务器数量,使多个服务器均衡处理请求,提升服务响应能力。

Q:

京东商城在举办促销活动期间,常常会有业务访问量大幅波动的状况发生,为保证业务平稳健康的运行,通常须要在促销活动以前人工扩展集群规模。可否使用云产品来应对这种场景?

A:

弹性伸缩产品。弹性伸缩经过设置伸缩策略,能够自动调整集群规模。在业务高峰期,自动增长云主机实例的数量,保证业务性能不受影响;当业务需求较低时,减小云主机实例数量,以节省成本。


Q:

弹性伸缩有哪几种伸缩策略?适用的场景有哪些?

A:

  1. 定时策略:在指定周期内定时伸缩集群规模,适用于业务负载变化状况可预知的场景;
  2. 告警策略:基于监控指标(如CPU、内存利用率)动态扩展伸缩组中的实例数,适用于没法预估的业务波动场景。

Q:

弹性伸缩适用于什么类型的业务?

A:

被伸缩的集群服务须要是无状态、可替换的。不能保存应用的状态信息(如会话)和相关数据(如数据库、日志等)。

Q:

客户要求在咱们的专有云JDStack系统里有一个审批流系统,用于审批资源,且须要兼容IE11。产品发布后却发现这样一个问题:在IE浏览器里打开审批单列表,删除其中一条后,前端会从新请求列表,此时后端肯定已删除此条数据,可是接口里却仍然返回了此条数据。请问是什么缘由?如何解决?

A:

此问题的出现是因为IE浏览器对ajax的get请求响应存在缓存机制。即当咱们请求过一次列表,紧接着删除一条数据以后从新发送此获取列表的get请求,那么IE浏览器只会把第一次请求该接口的数据拿出来,因此咱们看到的页面数据是没有变化的,留心看控制台的接口状况,能够发现状态码是“304”,即表示“只读/无变化 Not Modified”。

解决这个问题的方法除了把get改为post,也能够在请求接口上作一些处理,让浏览器认为先后两次请求是不同的,即在url后加上时间后缀的方法:

url:'xxxxxxxxxxxxxxxxxxx+"&"+new Date()

 


Q:

A是一个构造函数,var a = new A(),那么new操做符作了什么?

A:

首先建立了一个对象。而后每一个对象都有一个__proto__属性,指向它所对应的原型对象,而且继承了原型的方法和属性。其次,每个函数被建立的时候,JS都会自动为函数添加prototype属性,这个属性指向一个包含constructor字段的对象,constructor对象指向函数自身。

若是把函数当作构造函数,即经过new关键字创造实例的时候,就会把实例的__proto__属性指向构造函数的prototype属性,而后把构造函数prototype上constructor属性传递给实例,而且构造函数内部对象的this替换成实例。

因此new一共作了四件事情:

  1. 创造一个对象;
  2. 实例.__proto__ ===> 构造函数.prototype;
  3. 实例.constructor ===> 构造函数;
  4. 构造函数.call(实例)。

 

没有达到任职要求?快点击“JDStack专有云”扩充一下专业知识储备~

欢迎点击“京东云”了解更多精彩内容

相关文章
相关标签/搜索