좋은 프로그래머 웹 전단 학습 노선 공장 면접 문제 상세 풀이

좋은 프로그래머 웹 전단 학습 노선 공장 면접 문제 상세, 의존 주입 원리 수동 실현 의존 주입 실현 방식 -var_global={-ajax:function() {//설명 서비스, 내부 클래스라고도 할 수 있습니다 -this.get=function() {-//todo:get 방식으로 데이터 요청 -console.log("get is success");-}; -This.post=function () {-/todo:post 방식으로 데이터 요청 -console.log ("post is success");-}-},-//... 여러 가지 다른 서비스도 정의할 수 있습니다 - init:function(_server,_fx) {//이 방법은 주입기 역할을 합니다 - var_args=[]; - for(var i=0; i<_server.length>-_args.push(new this[_servers[i]);/여기서 특히 중요한 것은 새 new에서 나온 대상이어야 합니다. 미리 정의된 대상의 경우 전역의 치명적인 오류를 고칠 수 있습니다./-}-_fx.apply(this,_args);-}-}
-_global.init(["ajax"],function(_ajax) {•/수조의 모든 요소는 서비스의 이름을 표시하고, 함수의 인삼 순서는 수조의 순서와 일치합니다./-_ajax.get(), -_ajax.post(), -console.log(this);-});
참고 답안 사고방식: 본 문제는 js가 의존 주입 디자인 모델을 실현하도록 요구하는 것이다.프로그래밍의 기초를 고찰하는 목적.답이 유일하지 않다.의존 주입은 말 그대로 의존 관계가 있어야 서비스에 주입된다.사용이 필요할 때 관련 서비스를 주입하는 것이다.주의사항: 서비스는 전역 대상이 될 수 없고 반드시 새로운 실례의 대상이어야 한다.전체적인 대상이라면 주입하기만 하면 이런 일이 많고, 더 중요한 것은 여러 곳에서 사용하면 데이터가 더럽게 읽히는 치명적인 오류가 발생할 수 있다는 것이다.이를 통해 알 수 있듯이 서비스는 모두 미리 정의된 구조 함수이다.
아리 클라우드 필기시험 1, 아리 클라우드 제품 라인은 매우 풍부하고 ECS, RDS 등 수백 가지 제품을 가지고 있으며 각 제품은 모두 일부 통용적인 속성을 가지고 있다. 예를 들어 ID(id), 지역(region), 명칭(name), 그리고 각 제품은 자신만의 속성을 포함한다.ECS에는 인스턴스(instance) 속성이 있으며 ecs(옵션)가 있습니다.t1.small、ecs.t3.small、ecs.t1.large RDS는 데이터베이스 형식(dbType) 속성을 가지고 있으며 선택 가능한 값은 mysql, mssql, PPAS입니다. 대상방향 지식을 사용하여 ES6 문법을 바탕으로 ECS, RDS 두 종류를 작성하고 다음과 같은 방법을 실현하십시오. 1.config () 는 한 글자의 대상을 되돌려주고 모든 구성원 변수를 얻을 수 있습니다.2. buy()가 URL을 반환합니다. 형식은https://www.aliyun.com/buy?id=xxx®ion=xxx&name=xxx&제품마다 고유한 구성원 변수
class Property{constructor(_identify,_region,_name){this.id=_identify;this.region=_region;this.name=_name;}buy(){var _url="https://www.aliyun.com/buy?";for(let _key in this){if(this.hasOwnProperty(_key) && typeof(this[_key])!=="object"){_url+=_key+"="+this[_key]+"&";}}if(_url.indexOf("&")>0){return _url.replace(/&$/g,"");}return _url;}}
class ECS extends Property{
    constructor(_identify,_region,_name){
        super(_identify,_region,_name);
    }
    config(_value){
        this.instance=_value;
        return this;
    }
}
let _ecs=new ECS(1,"beijing","ECS");
console.log(_ecs.config("ecs.t1.small"));
console.log(_ecs.buy());

class RDS extends Property{
    constructor(_identify,_region,_name){
        super(_identify,_region,_name);
    }
    config(_type){
        this.dbType=_type;
        return this;
    }
}
var _rds=new RDS(2,"beijing","RDS");
console.log(_rds.config("mysql"));
console.log(_rds.buy());

문제 풀이 사고방식: 1. 면접 문제 묘사에 따르면 수백 가지 제품이 모두 통용되는 속성을 가지고 있다. 그러면 한 번에 여러 번 정의하여 사용하면 이런 효과를 얻을 수 있고 대상을 대상으로 해야 하기 때문에 상속을 우선적으로 고려한다.공공의 속성과 방법을 부류에 두다.하위 클래스는 상속을 실현하면 된다.2. 각 제품은 모두 자신의 특유의 속성을 가지고 있다. 그러면 config 방법을 호출할 때 설정 파라미터를 전송하고 한 글자 두 개의 대상을 되돌려 달라고 요구하며 모든 속성을 얻을 수 있기 때문에 현재 대상을 직접 되돌려주면 된다.3. buy 방법은 url로 돌아가야 한다. 이때 url에 어떤 속성이 포함되어 있는지 보면 현재 제품 대상의 속성을 발견할 수 있다.그러니까 반복해서 연결하면 돼.
2. [3, 5, 7, 2, 1, 8, 9, 0, 5, 23, 15, 5, 5, 8] 같은 구성 요소에서 중복된 요소를 제거하는 함수를 작성하십시오
function splice () {var_arr=[3, 5, 7, 2, 1, 8, 9, 0, 5, 23, 15, 5, 1, 5, 8]; for(var i=0; i<_arr.length>for(var n=i+1; n<_arr.length>if(_arr[i]===_arrr[n]) {_arr.splice(n--, 1);//요소 수가 줄어들었기 때문에 아래 표시된 3개 이상의 반복 요소를 앞으로 옮기면 누락됩니다}}console...log(_arr);}splice();
참고 답안 사고방식: 수조를 중시하는 것은 비교적 일반적인 면접 문제로 주로 한 지식 점수조의 splice 방법의 사용을 고찰한다.그러나 아리가 이 문제를 낸 것은 개인적으로 그가 더욱 주의하는 것은 당신의 진지한 태도나 사고의 치밀성이라고 생각한다.문제에서 세 개의 중복된 숫자가 연속되지 않았기 때문이다.주석 그 줄에서 나는 분명히 썼다. 이 문제는 n을 쓰지 않아도 결과가 맞다.하지만 세 개의 숫자가 연속적으로 나타나면 중복된 숫자를 완전히 지울 수 없다는 것을 알게 된다.
3. 귀속 함수를 작성하여 트리가 지정한 노드의 조상 체인 (주정 노드 포함) 을 조회합니다. 요구: 1. 조상 체인을 찾아낸 후 함수가 즉시 되돌아오고 뒤에 있는 노드를 계속 귀속하지 않습니다. 2. 함수는 트리의 노드의 키 이름을 지정하는 매개 변수가 있어야 합니다. 3. 예시 코드의options를 트리 구조의 참고로 사용합니다.
const options = [{id: 'zhejiang',text: 'Zhejiang',children: [{id: 'hangzhou',text: 'Hangzhou',children: [{id: 'xihu',text: 'West Lake'}]}]},{id: 'jiangsu',text: 'Jiangsu',children: [{id: 'nanjing',text: 'Nanjing',children: [{id: 'zhonghuamen',text: 'Zhong Hua Men'}]}]}];function recursion(_primary,_options){var _parent=null;for(var i=0;i<_options.length>if(_options[i].id!==_primary){if(!_options[i].children){return null;}_parent=recursion(_primary,_options[i].children);if(_parent){_parent.push(_options[i])return _parent;}}else{return [_options[i]];}}}console.log(recursion(“zhonghuamen",options));
참고 답안 사고방식: 문제는 귀속이 필요하다. 그러면 귀속 알고리즘에 대한 우리의 이해를 고찰하자.주어진 노드의 키 조회 부모 경로에 따라 우선 우리는 키가 있는 위치를 찾은 다음에 되돌아가야 한다. 이 문제의 난이도는 주로 찾은 후에 즉시 멈추고 계속 검색을 낭비해서는 안 된다는 데 있다.이 점에서 무조건 리턴을 하면 첫 번째 대상이 끝나면 리턴을 끝냅니다.
4. 아래의 JSON과 유사한 트리 구조(무한 등급 가능)를 parseDOM 함수(document.createElement,document.createTextNode,appendChild 등 방법으로 생성)를 통해 DOM 트리(element 요소를 되돌려준다)
const JsonTree = {"tagName": "ul","props": {"className": "list","data-name": "jsontree"},"children": [{"tagName": "li","children": [{"tagName": "img","props": {"src": "//img.alicdn.com/tps/TB1HwXxLpXXXXchapXXXXXXXXXX-32-32.ico","width": "16px"}}]},{"tagName": "li","children": [{"tagName": "a","props": {"href": "https://www.aliyun.com","target": "_blank'},'children':'아리운'}]};;
function parseDOM(jsontree){
    const {tagName,props,children} = jsontree;
    const element = document.createElement(tagName);
    // 
    //....
    for(let _key in props){
        element[_key]=props[_key];
    }
    if(children && typeof(children)==="object"){
        for(let i=0;i

참고 답안 사고방식: 우선 이 면접 문제는 실제와 부합되고 일상적인 개발 과정에서 이런 유형의 데이터를 자주 만날 수 있다.주로 우리가 귀속 알고리즘에 대한 숙련도를 시험한다.구체적인 지식 포인트는 바로 문제에 열거된 3개의 DOM 조작에 대한 지식이다.답안을 참고하는 사고방식은 매번 생성된 노드를 부모 요소에 추가하는 것이다.

좋은 웹페이지 즐겨찾기