1 line
38 KiB
HTML
1 line
38 KiB
HTML
<!doctype html><html lang="en" itemscope itemtype="https://schema.org/Article"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>프론트엔드 면접 문제 은행 ★ Front-end Job Interview Questions</title><meta name="description" content="A list of helpful front-end related questions you can use to interview potential candidates, test yourself or completely ignore."><meta name="keywords" content="front-end, interview questions, css questions, js questions, html questions, performance questions, interview test"><meta name="author" content="Front-end Job Interview Questions"><meta itemprop="author" content="Front-end Job Interview Questions"><meta itemprop="name" content="프론트엔드 면접 문제 은행 ★ Front-end Job Interview Questions"><meta itemprop="description" content="A list of helpful front-end related questions you can use to interview potential candidates, test yourself or completely ignore."><meta itemprop="image" content="https://h5bp.github.io/Front-end-Developer-Interview-Questions/assets/images/og-image.png"><meta property="og:title" content="프론트엔드 면접 문제 은행 ★ Front-end Job Interview Questions"><meta property="og:description" content="A list of helpful front-end related questions you can use to interview potential candidates, test yourself or completely ignore."><meta property="og:url" content="https://h5bp.github.io/Front-end-Developer-Interview-Questions/translations/korean/"><meta property="og:site_name" content="Front-end Job Interview Questions"><meta property="og:image" content="https://h5bp.github.io/Front-end-Developer-Interview-Questions/assets/images/og-image.png"><meta property="og:image:secure_url" content="/assets/images/og-image.png"><meta property="og:type" content="website"><meta property="og:locale" content="en_US"><meta name="twitter:card" content="summary"><meta name="twitter:title" content="프론트엔드 면접 문제 은행 ★ Front-end Job Interview Questions"><meta name="twitter:description" content="A list of helpful front-end related questions you can use to interview potential candidates, test yourself or completely ignore."><meta name="twitter:site" content="@h5bp"><meta name="twitter:image" content="https://h5bp.github.io/Front-end-Developer-Interview-Questions/assets/images/og-image.png"><meta name="twitter:creator" content="@h5bp"><link type="image/png" rel="apple-touch-icon" href="/assets/images/apple-touch-icon.png"><link type="image/png" sizes="32x32" rel="icon" href="/assets/images/favicon-32x32.png"><link type="image/png" sizes="16x16" rel="icon" href="/assets/images/favicon-32x32.png"><link type="image/png" color="#181818" rel="mask-icon" href="/assets/images/favicon-96x96.png"><meta name="mobile-web-app-capable" content="yes"><meta name="robots" content="index,follow"><style>code[class*=language-],pre[class*=language-]{color:#c5c8c6;text-shadow:0 1px rgba(0,0,0,.3);font-family:Inconsolata,Monaco,Consolas,'Courier New',Courier,monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#1d1f21}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#7c7c7c}.token.punctuation{color:#c5c8c6}.namespace{opacity:.7}.token.keyword,.token.property,.token.tag{color:#96cbfe}.token.class-name{color:#ffffb6;text-decoration:underline}.token.boolean,.token.constant{color:#9c9}.token.deleted,.token.symbol{color:#f92672}.token.number{color:#ff73fd}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#a8ff60}.token.variable{color:#c6c5fe}.token.operator{color:#ededed}.token.entity{color:#ffffb6}.token.url{color:#96cbfe}.language-css .token.string,.style .token.string{color:#87c38a}.token.atrule,.token.attr-value{color:#f9ee98}.token.function{color:#dad085}.token.regex{color:#e9c062}.token.important{color:#fd971f}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}:root{--font-family-heading:sans-serif;--font-family-body:Georgia,serif;--font-family-code:Menlo,Monaco,'Courier New',monospace;--color-primary:#835EFF;--color-secondary:#FF008D;--color-safe:#8338EC;--color-gradient:linear-gradient(to right, var(--color-primary), var(--color-secondary));--color-highlight:var(--color-primary);--color-gray-opacity:rgba(39,39,39,0.04);--color-heading:#23231A;--color-text:#23231A;--background-default:#F9F9F9;--border-radius-default:5px;--box-shadow-default:0 2rem 4rem rgba(0,0,0,.15);--transition-duration:0.27s}*{margin:0;padding:0;box-sizing:border-box;outline-color:var(--color-primary)}::selection{background:var(--color-primary);color:var(--background-default)}::-moz-selection{background:var(--color-primary);color:var(--background-default)}.nav{padding:1rem 0;margin-bottom:1rem}.navigation{list-style:none;display:flex;font-size:1rem}.navigation-item-emoji{margin-right:.8rem}.navigation-item-emoji a{text-decoration:none;display:inline-block;vertical-align:middle}.navigation-item:not(:last-of-type){margin-right:.8rem}.topbar{width:100%;height:.18rem;background:var(--color-gradient)}.skip-link{position:absolute;top:0;left:0;padding:.5rem 1rem;background-color:var(--color-primary);color:#fff;text-decoration:none;transform:translateY(-100%)}.skip-link:focus{transform:none}.header{margin-bottom:2rem}.header-big-title{font-size:6.9rem;line-height:1.06;margin:2.1rem 0;color:var(--color-primary);word-break:break-word}@supports (mix-blend-mode:lighten){.header-big-title{display:inline-block;position:relative;color:#000;background:#fff;mix-blend-mode:multiply}.header-big-title::before{content:'';display:block;position:absolute;top:0;right:0;bottom:0;left:0;background-image:url(/assets/images/gradient.svg);pointer-events:none}.header-big-title::before{mix-blend-mode:screen}}.header-heading{font-size:2.3rem;text-transform:uppercase}.header-big-description{font-size:1.8rem;line-height:1.4;padding:1rem 0}.header-description{padding-top:1rem}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:var(--font-family-body);font-weight:400;font-size:1.2rem;line-height:1.5;color:var(--color-text)}section+section{padding-top:2rem}h1,h2,h3,h4,h5,h6{font-family:var(--font-family-heading);color:var(--color-heading);font-style:normal;line-height:1.2;font-weight:600}section+section{padding-top:2rem}a{color:inherit;text-decoration:none;color:var(--color-secondary);transition:color ease-out var(--transition-duration)}a:focus:not(.skip-link),a:hover:not(.skip-link){color:var(--color-primary)}a[rel~=external]{text-decoration:overline}ul:not(.navigation):not(.inline-list){list-style:none}ul:not(.navigation):not(.inline-list) li::before{content:"\25A0";color:var(--color-primary);font-weight:700;display:inline-block;width:1em;margin-left:-1em}li{margin-bottom:.6rem}b,strong{font-weight:600}time{display:inline-block;color:var(--color-gray-70)}[tabindex='-1']{outline:0}img,svg{vertical-align:middle}img{display:block;max-width:100%;border-radius:var(--border-radius-default)}code{font-family:var(--font-family-code);color:var(--color-code);font-style:normal;font-size:1rem}blockquote:not([class]){padding-left:1rem;margin-left:-1rem;border-left:2px solid var(--color-primary);color:var(--color-gray-70);font-style:italic}code[class*=language-],pre[class*=language-]{font-size:.9rem;font-style:normal}p+pre[class*=language-]{margin-bottom:1.8rem}mark{color:var(--color-highlight);background-color:transparent}dt{font-weight:700}dd+dt{padding-top:.5rem}abbr[title],acronym[title]{text-decoration:overline;background:var(--color-gray-opacity);border:1px solid var(--color-gray-opacity);cursor:help}.container{max-width:54rem;padding:3rem 4rem 4rem;margin-right:auto;margin-left:auto}.content li:not(:last-of-type){margin-bottom:.5rem}.content h2{max-width:33rem}.content>:not(:last-child){margin-bottom:2rem}.content :not(hr)+h2,.content :not(hr)+h3{padding-top:1rem}.content ol:not(.inline-list),.content ul:not(.inline-list){padding-left:1.2rem}.content-simple li:not(:last-of-type){margin-bottom:.5rem}.content-edit{text-align:right;margin-top:2rem}.inline-list{padding:0;list-style:none}.inline-list li{padding:0;display:inline-block;vertical-align:middle;text-align:center}.inline-list li::before{content:'';margin-left:0}.inline-list li img{display:block;margin:auto;margin-bottom:.6rem}.inline-list li a{display:inline-block;vertical-align:middle;margin:0 .15rem}.avatar{max-width:12rem}.footer{padding-top:3rem}.footer-text{font-size:.8rem}</style></head><body><div class="topbar"></div><div class="container"><a class="skip-link" href="#main-content">Skip to main content</a><nav class="nav"><ul class="navigation"><li class="navigation-item"><span class="navigation-anchor">Questions:</span></li><li class="navigation-item"><a class="navigation-anchor" href="/questions/coding-questions/" title="Coding Questions">Coding</a></li><li class="navigation-item"><a class="navigation-anchor" href="/questions/css-questions/" title="CSS Questions">CSS</a></li><li class="navigation-item"><a class="navigation-anchor" href="/questions/fun-questions/" title="Fun Questions">Fun</a></li><li class="navigation-item"><a class="navigation-anchor" href="/questions/general-questions/" title="General Questions">General</a></li><li class="navigation-item"><a class="navigation-anchor" href="/questions/html-questions/" title="HTML Questions">HTML</a></li><li class="navigation-item"><a class="navigation-anchor" href="/questions/javascript-questions/" title="JavaScript Questions">JavaScript</a></li><li class="navigation-item"><a rel="external noreferrer noopener" target="_blank" class="navigation-anchor" href="https://scottaohara.github.io/accessibility_interview_questions/" title="Accessibility Questions (external link)">A11y</a></li><li class="navigation-item"><a class="navigation-anchor" href="/questions/network-questions/" title="Network Questions">Network</a></li><li class="navigation-item"><a class="navigation-anchor" href="/questions/performance-questions/" title="Perfomance Questions">Perfomance</a></li><li class="navigation-item"><a class="navigation-anchor" href="/questions/testing-questions/" title="Testing Questions">Testing</a></li><li class="navigation-item">|</li><li class="navigation-item-emoji"><a class="navigation-anchor" href="/" title="Home">🏠</a></li><li class="navigation-item-emoji"><a class="navigation-anchor" href="/translations" title="Translations">🌐</a></li></ul></nav><main id="main-content" tabindex="-1"><header class="header"><h1 class="header-big-title">프론트엔드 면접 문제 은행</h1></header><div class="content"><h1>프론트엔드 면접 문제 은행</h1><p>이 파일에는 잠재적인 프론트엔드 개발자 후보를 선정할 때 사용할 수 있는 여러 가지 면접 질문들이 있습니다. 후보자에게 모든 문제를 사용하는 것은 많은 시간이 소요되기 때문에 추천하지 않습니다. 대신, 여러분이 요구하는 주요 기술과 관련된 질문들을 몇 가지 선정해서 사용해보세요.</p><p><strong>참고:</strong> 여기 있는 많은 질문은 자유롭게 추가/수정/삭제될 수 있고 정답보다 그 사람의 능력에 관해 이야기하는 흥미로는 토론을 끌어낼 수 있다는 것을 기억하세요.</p><h2 id="%EB%AA%A9%EC%B0%A8"><a class="header-anchor" href="#%EB%AA%A9%EC%B0%A8" aria-hidden="true"></a> 목차</h2><ol><li><a href="#%EC%9D%BC%EB%B0%98%EC%A0%81%EC%9D%B8-%EC%A7%88%EB%AC%B8">일반적인 질문</a></li><li><a href="#HTML-%EA%B4%80%EB%A0%A8-%EC%A7%88%EB%AC%B8">HTML 관련 질문</a></li><li><a href="#CSS-%EA%B4%80%EB%A0%A8-%EC%A7%88%EB%AC%B8">CSS 관련 질문</a></li><li><a href="#JS-%EA%B4%80%EB%A0%A8-%EC%A7%88%EB%AC%B8">JS 관련 질문</a></li><li><a href="#%ED%85%8C%EC%8A%A4%ED%8A%B8-%EA%B4%80%EB%A0%A8-%EC%A7%88%EB%AC%B8">테스트 관련 질문</a></li><li><a href="#%EC%84%B1%EB%8A%A5-%EA%B4%80%EB%A0%A8-%EC%A7%88%EB%AC%B8">성능 관련 질문</a></li><li><a href="#%EC%BD%94%EB%94%A9-%EA%B4%80%EB%A0%A8-%EC%A7%88%EB%AC%B8">코딩 관련 질문</a></li></ol><h2 id="%ED%95%A8%EA%BB%98%ED%95%98%EA%B8%B0"><a class="header-anchor" href="#%ED%95%A8%EA%BB%98%ED%95%98%EA%B8%B0" aria-hidden="true"></a> 함께하기</h2><ol><li><a href="#%ED%95%A8%EA%BB%98%ED%95%98%EB%8A%94-%EB%B6%84%EB%93%A4">함께하는 분들</a></li><li><a href="https://github.com/h5bp/Front-end-Developer-Interview-Questions/blob/master/CONTRIBUTING.md">함께하는 방법</a></li><li><a href="https://github.com/h5bp/Front-end-Developer-Interview-Questions/blob/master/LICENSE.md">라이선스</a></li></ol><h4>일반적인 질문:</h4><ul><li>어제/이번 주에 무엇을 공부하셨나요?</li><li>코딩을 할 때 당신을 들뜨게 하거나 흥미를 끄는 것들은 무엇은 가요?</li><li>최근에 당신이 경험한 기술적인 문제는 무엇이고 그것을 어떻게 해결했나요?</li><li>웹 애플리케이션이나 사이트를 만들 때 고려해야 할 UI, Security, Performance, SEO, Maintainability에 대해서 설명해주세요.</li><li>선호하는 개발 환경에 대해 자유롭게 이야기해 주세요.</li><li>버전 관리 시스템은 어떤 것들을 사용해보셨습니까?</li><li>당신이 웹 페이지를 만들 때의 과정을 설명해주실 수 있을까요?</li><li>당신에게 5가지 다른 stylesheet가 있습니다. 어떤 방법으로 사이트에 제공하는 게 가장 효과적일까요?</li><li>점진적 향상법(progressive enhancement)과 우아한 성능저하법(graceful degradation)의 차이를 설명하실 수 있습니까?</li><li>웹사이트에서 assets/resources를 최적화하는 방법에 관해 설명해주세요.</li><li>브라우저가 한 번에 1개의 도메인에서 내려받는 자원은 몇 개인가요?<ul><li>예외에는 어떤 것들이 있나요?</li></ul></li><li>페이지 로드 시간을 줄이는 세 가지 방법에 관해서 이야기 해 보세요.</li><li>당신이 프로젝트에 합류했습니다. 근데 그들은 Tab을 이용하고, 당신은 Space를 사용했습니다. 어떻게 하실 건가요?</li><li>간단한 Slideshow 페이지를 만드는 방법에 관해서 이야기해 보세요.</li><li>만약 당신이 올해 기술적 책임자가 되었다면 무엇을 먼저 하시겠습니까?</li><li>표준의 중요성에 관해 설명해주세요.</li><li>Flash of Unstyled Content에 관해 설명해주세요. 또 FOUC를 피하기 위해선 어떻게 해야 하나요?</li><li>ARIA와 screenreader에 대해 설명해주세요. 또 접근성을 지원하는 웹사이트를 어떻게 만드는지에 대해도 설명해주세요.</li><li>CSS 애니메이션과 JavaScript 애니메이션의 차이점에 관해 설명해주세요.</li><li>CORS는 무엇의 약자이고 어떤 문제에 대해서 언급하는 것인가요?</li></ul><h4>HTML 관련 질문:</h4><ul><li><code>doctype</code>이 무엇을 하는 것인가요?</li><li>표준모드(standards mode)와 쿽스모드(quirks mode)의 다른 점은 무엇인가요?</li><li>XML과 XHTML의 다른 점은 무엇인가요</li><li>XHTML을 이용한 페이지의 한계점은 무엇이 있나요?</li><li><code>application/xhtml+xml</code>으로 지정한 페이지에 어떠한 문제가 있나요?</li><li>다국어가 포함된 페이지는 어떤 방식으로 제공하나요?</li><li>다국어 페이지를 제공하는 여러 방법에 관해 설명해주세요.</li><li><code>data-</code>속성은 무엇을 하는 것인가요? 사용했을 때 이점은 무엇인가요?</li><li>HTML5를 오픈 웹 플랫폼(open web platform)으로 생각해본다면, 어떤 것들로 구성돼 있을까요?</li><li><code>쿠키(Cookies)</code>와 <code>세션저장소(sessionStorage)</code>와 <code>로컬저장소(localStorage)</code>의 차이점을 설명해주세요.</li><li><code><script></code>, <code><script async></code>와 <code><script defer></code>의 차이점에 관해 설명해주세요.</li><li>CSS<code><link></code>를 <code><head></head></code>사이에 쓰는 것과 JS<code><script></code>를 <code><body></body></code>뒤에 사용하는 것은 좋은 사용법일까요? 어디에 배치하는 게 좋을까요?</li><li>Progressive rendering이란 무엇인가요?</li><li>이미지 태그에 <code>srcset</code> 속성을 사용하는 이유는 무엇인가요? 브라우저가 이 속성을 가진 콘텐츠를 평가할 때 사용하는 과정을 설명해보세요.</li><li>HTML templating language를 사용해 본 경험이 있나요?</li></ul><h4>CSS 관련 질문:</h4><ul><li>class와 id의 차이점에 관해서 설명해주세요.</li><li>“reset” CSS가 무엇인지, 어떻게 유용한지 설명해주세요.</li><li>Floats가 어떻게 동작하는지 설명해주세요.</li><li>z-index에 관해 설명해주세요.</li><li>BFC(Block Formatting Context)에 관해 설명해주세요</li><li>클리어링(Clearing) 기술에는 어떤 것들이 있으며, 어떨 때 어떻게 사용하는 것이 적절한지 설명하세요.</li><li>CSS 스프라이트(CSS Sprites)를 설명하고, 페이지나 사이트를 어떻게 향상하는지 설명하세요.</li><li>Image Replacement를 사용해야 할 때, 선호하는 기술과 언제 사용하는지를 설명해주세요.</li><li>브라우저 스펙 차이에 따른 스타일링 이슈를 수정하기 위해서 어떻게 접근하나요?</li><li>기능이 제약된 브라우저를 위해서 어떤 방식으로 페이지를 만드나요?<ul><li>어떠한 기술과 절차를 거치는지 설명하세요.</li></ul></li><li>시각적으로 보이지 않고 스크린 리더에서만 가능하게 하는 방법에 관해 설명해주세요.</li><li>그리드 시스템(Grid system)을 사용한 적이 있나요? 있다면 어떠한 것을 선호하나요?</li><li>미디어 쿼리(media queries)를 사용한 적이 있나요? 혹은 모바일에 맞는 layout과 CSS를 사용한 적이 있나요?</li><li>SVG를 스타일링하는데 익숙하신가요?</li><li>인쇄하기 위해 웹페이지를 어떻게 최적화 하나요?</li><li>효율적인 CSS를 작성하기 위한 "비법(gotchas)"은 어떤 게 있나요?</li><li>CSS 전처리(CSS preprocessors)를 사용해보셨나요?<ul><li>그렇다면, 사용 경험에 기반을 둬 좋았던 점과 나빴던 점을 설명해주세요.</li></ul></li><li>페이지에서 표준 폰트가 아닌 폰트 디자인을 사용할 때 어떤 방식으로 처리하시나요? (웹폰트를 제외하고)</li><li>CSS Selector가 어떠한 원리로 동작하는지 설명해주세요.</li><li>pseudo-elements에 관해서 설명하고 어디에서 사용되는지 이야기해보세요.</li><li>box model에 관해 설명하고 브라우저에서 어떻게 동작하는지 설명해주세요.</li><li><code>* { box-sizing: border-box; }</code>은 무엇이고 사용했을때 이점은 무엇인가요?</li><li>기억나는 display 속성에 대한 값들을 나열해보세요.</li><li>inline과 inline-block의 차이점은 무엇인가요?</li><li>요소를 배치하는 방법(relative, fixed, absolute, static) 간의 차이는 무엇인가요?</li><li>CSS에서 'C’는 Cascading을 의미합니다. Cascading에 관해서 설명해주세요. 또 cascading system의 장점은 무엇인가요?</li><li>CSS framework를 사용해본 적이 있으신가요? 실무에서 사용해보았다면 어떤 이점이 있었나요?</li><li>새로운 CSS Flexbox 혹은 Grid 스펙을 사용해 보신 적 있나요?</li><li>반응형(Responsive) 디자인은 적응형(Adaptive) 디자인과 어떤 차이점이 있나요?</li><li>레티나 그래픽 환경에서 작업해 보신 적이 있나요? 하셨다면 어떤 기술을 사용하셨나요?</li><li><em>절대 좌표</em>대신 <code>translate()</code> 혹은 반대로 사용하는 이유가 있나요? 있다면 이유에 관해서 설명해주세요.</li></ul><h4>JS 관련 질문:</h4><ul><li>event delegation에 관해 설명해주세요.</li><li><code>this</code>는 JavaScript에서 어떻게 작동하는지 설명해주세요.</li><li>prototype 기반 상속은 어떻게 하는지 설명해주세요.</li><li>AMD와 CommonJS는 무엇이고, 이것들에 대해 어떻게 생각하시나요?</li><li>다음 코드가 즉시 호출 함수 표현식(IIFE)로 동작하지 않는 이유에 관해서 설명해보세요: <code>function foo(){ }();</code>.<ul><li>IIFE로 만들기 위해서는 어떻게 해야 하나요?</li></ul></li><li><code>null</code>과 <code>unedefined</code> 그리고 <code>undeclared</code>의 차이점은 무엇인가요?<ul><li>두개를 구분하기 위해서는 어떻게 하면 될까요?</li></ul></li><li>클로져(Closure)는 무엇이며, 어떻게/왜 사용하는지 설명해주세요.<ul><li>클로져를 만들 때 선호하는 패턴은 무엇인가요? argyle (IIFEs에만 적용할 수 있다)</li></ul></li><li>익명함수(anonymous functions)는 주로 어떤 상황에서 사용하나요?</li><li>당신의 코드를 어떻게 구성하는지? (모듈 패턴, 전통적 상속)</li><li>호스트 객체(Host Objects)와 네이티브 객체(Native Objects)의 차이점은 무엇인가요?</li><li>다음 코드의 차이점은 무엇인가요?</li></ul><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line"><span class="token keyword">function</span> <span class="token function">Person</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span><span class="token punctuation">}</span> <span class="token keyword">var</span> person <span class="token operator">=</span> <span class="token function">Person</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">var</span> person <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Person</span><span class="token punctuation">(</span><span class="token punctuation">)</span></div></code></pre><ul><li><code>.call</code>과 <code>.apply</code>의 차이점은 무엇인가요?</li><li><code>Function.prototype.bind</code>을 설명하세요.</li><li><code>document.write()</code>는 언제 사용하나요?</li><li>UA 문자열을 이용하여 기능 검출(feature detection)과 기능 추론(feature inference)의 차이점을 설명하세요.</li><li>AJAX에 관해 가능한 한 자세히 설명하세요.</li><li>AJAX를 사용했을 때의 장단점에 대해 설명해주세요.</li><li>JSON이 어떻게 동작 되는지 설명하세요. (그리고 AJAX와 어떻게 다른지 설명하세요.)</li><li>기존에 JavaScript 템플릿을 사용한 적이 있나요? 만약에 있다면, 어떠한 방식으로 사용했는지 말씀해주세요.</li><li>"호이스팅(Hoisting)"에 대해서 설명하세요.</li><li>이벤트 버블링(Event Bubbling)에 대해서 설명하세요.</li><li>이벤트 캡쳐링(Event Capturing)에 대해서 설명하세요.</li><li>"속성(Attribute)"와 "요소(property)"의 차이가 무엇인가요?</li><li>내장된 JavaScript 객체를 확장하는 것이 좋지 않은 이유는 무엇인가요?</li><li>document load event와 DOMContentLoaded event의 차이점은 무엇인가요?</li><li><code>==</code>와 <code>===</code>의 차이점은 무엇인가요?</li><li>JavaScript의 "동일출처정책(the same-origin policy)"에 대해서 설명하세요.</li><li>다음 코드를 동작하게 만드세요.</li></ul><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line"><span class="token function">duplicate</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">,</span><span class="token number">2</span><span class="token punctuation">,</span><span class="token number">3</span><span class="token punctuation">,</span><span class="token number">4</span><span class="token punctuation">,</span><span class="token number">5</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// [1,2,3,4,5,1,2,3,4,5]</span></div></code></pre><ul><li>삼항식(Ternary statement)을 사용하는 이유는 무엇이고, 그것을 표현하기 위한 연산자 단어는 무엇인가요?</li><li><code>use strict;</code>은 무엇이고, 사용했을 때 장단점에 관해서 설명해주세요.</li><li>100번 반복되는 반복문이 있습니다. 3의 배수일 때는 <code>fizz</code>, 5의 배수일 때는 <code>buzz</code>, 3과 5의 공배수일 때는 <code>fizzbuzz</code>가 출력되는 코드를 작성해보세요.</li><li>전역 scope를 사용했을 때 장단점에 관해 설명해주세요.</li><li>때때로 <code>load</code> event를 사용하는 이유에 관해 설명해주세요. 또 단점이 있다면 대안에 대해서도 설명해주세요.</li><li>SPA에서 SEO에 유리하도록 만들기 위한 방법에 대해 설명해주세요.</li><li>Promise를 사용해 본 경험이 있나요?</li><li>Promise가 콜백 대비 장/단점은 무엇인지 설명해주세요.</li><li>JavaScript의 작동방식의 장단점에 관해 설명해주세요.</li><li>JavaScript를 디버깅할 때 사용하는 도구가 있으면 설명해주세요.</li><li>객체 안의 속성과 배열의 아이템을 순회할 때 사용하는 문법에 관해 설명해주세요.</li><li>mutable object와 immutable object에 관해 설명해주세요.<ul><li>JavaScript에서 immutable 객체의 예를 들어보세요.</li><li>immutability의 장/단점은 무엇인가요?</li><li>자신의 코드에서 불변성(immutability를) 어떻게 달성할 수 있나요?</li></ul></li><li>동기방식과 비동기 방식 함수의 차이에 관해서 설명해주세요.</li><li>event loop이란 무엇인가요?<ul><li>call stack과 task queue에 관해 설명해주세요.</li></ul></li><li><code>function foo() {}</code>와 <code>var foo = function() {}</code>에서 foo 의 차이가 무엇인지 설명해보세요.</li><li><code>let</code>, <code>var</code>, <code>const</code>의 차이점에 관해서 설명해주세요.</li></ul><h4>테스트 관련 질문들:</h4><ul><li>test code를 작성하면서 개발하는 방식의 장점과 단점에 대해 설명해주세요.</li><li>test code를 테스트하는 툴을 사용해보신 경험이 있나요?</li><li>유닛 테스트와 함수테스트의 차이점은 무엇인가요?</li><li>code style linting tool을 사용했을때 장점은 무엇인가요?</li></ul><h4>성능 관련 질문들:</h4><ul><li>성능관련 이슈들을 발견하기 위해서 사용하는 방법은 무엇인가요?</li><li>웹사이트 scrolling 성능을 향상시키기 위한 몇가지 방법에 대해 설명해보세요.</li><li>브라우저의 layout, painting, compositing에 대해 설명해보세요.</li></ul><h4>네트워크 질문들:</h4><ul><li>전통적으로, 웹사이트의 assets을 여러 도메인으로 서빙했을 때 장점은 무엇인가요?</li><li>URL로 접속했을 때 어떤 플로우로 화면에 웹사이트가 그려지는지 네트워크 관점에서 설명해주세요.</li><li>Long-Polling과 Websocket, Server-Sent Event에 대해 설명해주세요.</li><li>다음 request header들에 대해 설명해주세요.<ul><li>Diff. between Expires, Date, Age and If-Modified-…</li><li>Do Not Track</li><li>Cache-Control</li><li>Transfer-Encoding</li><li>ETag</li><li>X-Frame-Options</li></ul></li><li>HTTP와 HTTPS에 대해 설명해주세요.</li><li>HTTP Method들에 대해 설명해주세요.</li></ul><h4>코딩 질문:</h4><p><em>질문: <code>foo</code>의 값은 무엇인가요?</em></p><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line"><span class="token keyword">var</span> foo <span class="token operator">=</span> <span class="token number">10</span> <span class="token operator">+</span> <span class="token string">'20'</span><span class="token punctuation">;</span></div></code></pre><p><em>질문: 아래 코드의 결과값은 무엇인가요?</em></p><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line">console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token number">0.1</span> <span class="token operator">+</span> <span class="token number">0.2</span> <span class="token operator">==</span> <span class="token number">0.3</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div></code></pre><p><em>질문: 아래 코드가 동작하게 하기 위해선 어떻게 해야할까요?</em></p><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line"><span class="token function">add</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 7</span></div><div class="highlight-line"><span class="token function">add</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 7</span></div></code></pre><p><em>질문: 아래 구문의 반환값은 무엇인가요?</em></p><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line"><span class="token string">"i'm a lasagna hog"</span><span class="token punctuation">.</span><span class="token function">split</span><span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">reverse</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">join</span><span class="token punctuation">(</span><span class="token string">""</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div></code></pre><p><em>Question: What is the value of <code>window.foo</code>?</em><br><em>질문: <code>window.foo</code>의 값은 무엇인가요?</em></p><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line"><span class="token punctuation">(</span> window<span class="token punctuation">.</span>foo <span class="token operator">||</span> <span class="token punctuation">(</span> window<span class="token punctuation">.</span>foo <span class="token operator">=</span> <span class="token string">"bar"</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">;</span></div></code></pre><p><em>질문: 아래 두 alert의 결과값은 무엇인가요?</em></p><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line"><span class="token keyword">var</span> foo <span class="token operator">=</span> <span class="token string">"Hello"</span><span class="token punctuation">;</span></div><div class="highlight-line"><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></div><div class="highlight-line"> <span class="token keyword">var</span> bar <span class="token operator">=</span> <span class="token string">" World"</span><span class="token punctuation">;</span></div><div class="highlight-line"> <span class="token function">alert</span><span class="token punctuation">(</span>foo <span class="token operator">+</span> bar<span class="token punctuation">)</span><span class="token punctuation">;</span></div><div class="highlight-line"><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div><div class="highlight-line"><span class="token function">alert</span><span class="token punctuation">(</span>foo <span class="token operator">+</span> bar<span class="token punctuation">)</span><span class="token punctuation">;</span></div></code></pre><p><em>질문: <code>foo.length</code>의 값은 무엇인가요?</em></p><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line"><span class="token keyword">var</span> foo <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span></div><div class="highlight-line">foo<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div><div class="highlight-line">foo<span class="token punctuation">.</span><span class="token function">push</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div></code></pre><p><em>질문: <code>foo.x</code>의 값은 무엇인가요?</em></p><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line"><span class="token keyword">var</span> foo <span class="token operator">=</span> <span class="token punctuation">{</span>n<span class="token punctuation">:</span> <span class="token number">1</span><span class="token punctuation">}</span><span class="token punctuation">;</span></div><div class="highlight-line"><span class="token keyword">var</span> bar <span class="token operator">=</span> foo<span class="token punctuation">;</span></div><div class="highlight-line">foo<span class="token punctuation">.</span>x <span class="token operator">=</span> foo <span class="token operator">=</span> <span class="token punctuation">{</span>n<span class="token punctuation">:</span> <span class="token number">2</span><span class="token punctuation">}</span><span class="token punctuation">;</span></div></code></pre><p><em>질문: 아래 코드의 출력값은 무엇인가요?</em></p><pre class="language-javascript"><code class="language-javascript"><div class="highlight-line">console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'one'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div><div class="highlight-line"><span class="token function">setTimeout</span><span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span></div><div class="highlight-line"> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'two'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div><div class="highlight-line"><span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token number">0</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div><div class="highlight-line">console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">'three'</span><span class="token punctuation">)</span><span class="token punctuation">;</span></div></code></pre><h4>그 외 흥미로운 질문들:</h4><ul><li>최근에 수행했던 흥미로운 프로젝트는 무엇인가요?</li><li>사용하는 개발 도구에서 마음에 드는 부분은 무엇인가요?</li><li>프론트엔드 커뮤니티에서 당신에게 영감을 준 사람이 있다면 누구인가요?</li><li>애완동물 관련 프로젝트를 해 보았나요? 해보았다면 어떤 종류의 프로젝트인가요?</li><li>IE에서 가장 좋아하는 기능은 무엇인가요?</li><li>어떤 커피를 좋아하시나요?</li></ul><h4>함께하는 분들:</h4><p>이 문서는 2009년에 다음에 언급된 분들과의 협업으로 시작했습니다.<br><a href="https://twitter.com/paul_irish">@paul_irish</a> <a href="https://twitter.com/bentruyman">@bentruyman</a> <a href="https://twitter.com/cowboy">@cowboy</a> <a href="https://twitter.com/ajpiano">@ajpiano</a> <a href="https://twitter.com/slexaxton">@SlexAxton</a> <a href="https://twitter.com/boazsender">@boazsender</a> <a href="https://twitter.com/miketaylr">@miketaylr</a> <a href="https://twitter.com/vladikoff">@vladikoff</a> <a href="https://twitter.com/gf3">@gf3</a> <a href="https://twitter.com/jon_neal">@jon_neal</a> <a href="https://twitter.com/sambreed">@sambreed</a> <a href="https://twitter.com/iansym">@iansym</a></p><p>현재는 <a href="https://github.com/h5bp/Front-end-Developer-Interview-Questions/graphs/contributors">100이 넘는 개발자들</a>이 함께하고 있습니다.</p></div><div class="content-edit"><a rel="external noreferrer noopener" target="_blank" href="https://github.com/h5bp/Front-end-Developer-Interview-Questions/tree/master/src/translations/korean/index">Edit this page</a></div></main><footer class="footer"><p class="footer-text">Copyright (c) 2012 - 2018. Contributors to <a href="https://github.com/h5bp/Front-end-Developer-Interview-Questions">Front-end-Developer-Interview-Questions.</a><br>This project is maintained by <a href="https://github.com/cezaraugusto" target="_blank" rel="noreferrer noopener">Cezar Augusto</a>, <a href="https://github.com/roblarsen" target="_blank" rel="noreferrer noopener">Rob Larsen</a> and <a href="https://github.com/vvscode" target="_blank" rel="noreferrer noopener">Vasiliy Vanchuk</a> .<br>Curious about the project? <a href="/about/">Read more about here</a>.</p></footer></div><script>console.log("%cA black belt is a white belt that didn't quit.","color: #fff; font-size: 80px; text-shadow: 1px 1px 1px #000; font-family: serif;");</script></body></html> |