신입 프론트엔드 면접질문 정리

junyoung·2020년 11월 26일
1

프론트엔드

목록 보기
1/1
post-thumbnail

📝질문 목록

✍학부 기초

  • 객체지향 프로그래밍
  • 컴퓨터 프로그래밍 패러다임중 하나로써 기존의 절차지향과는 다르게 객체끼리 상호작용을 통해 프로그램이 동작하는것
    - 특징
    • 캡슐화, 추상화, 상속, 다형성
      - 장점
    • 코드 재사용이 용이
    • 유지보수가 쉬움
    • 큰 프로젝트에 적합
  • 오버로딩 vs 오버라이딩
  • 오버로딩
    • 하나의 클래스의 같은 이름의 메서드를 여러개 정의하는것
    • 매개변수 타입과 갯수가 달라야함!
  • 오버라이딩
    • 부모클래스로부터 상속받는 메서드의 내용을 상속받는 클래스에 맞도록 재정의 하는것
  • 추상클래스
  • 추상클래스는 클래스 구현부 내부에 추상 메서드가 하나 이상 포함되거나 abstract로 정의된 경우를 말함
  • 동일한 부모를 가지는 클래스를 묶는 개념으로 상속을 받아서 기능을 확장시키는 것이 목적
  • 인터페이스
  • 모든 메서드가 추상 메서드인 경우를 말함
  • 구현 객체가 같은 동작을 한다는 것을 보장하는 것이 목적
  • 추상클래스와 반대로 다중 상속이 가능함
  • JDBC
  • 자바에서 데이터베이스에 더욱 쉽게 접근 할 수 있도록 하는 API
  • JDK
  • 자바 프로그램 개발도구
  • 자바 애플리케이션을 구축하기 위한 핵심 플랫폼 구성 요소
  • 싱글턴 패턴
  • 애플리케이션 시작시 최초 한번만 메모리를 할당하고 그 메모리의 객체를 만들어 사용하는 패턴
  • 장점
    • 메모리 낭비를 막음
    • static(전역) 객체기 때문에 다른 클래스에서 데이터를 공유하기 쉬움
  • 가비지 컬렉션
  • 시스템에서 더이상 사용하지 않는 동적 할당된 메모리 블록을 찾아 다시 사용가능한 자원으로 회수하는것
  • 자동으로 이루어지므로 메모리 영역을 관리할 필요가 없음
  • 람다식
  • 메소드를 하나의 식으로 표현한것
  • 식별자 없이 실행할 수 있는 함수 표현식
  • 익명함수라고도 부름

✍JavaScript

  • 자바스크르립트?
  • HTML과 CSS로 만들어진 웹페이지를 동적으로 변경해주는 스크립트 언어
  • 객체 기반의 언어이고, 변수 자료형이 선언되지 않음
  • 장점 : 컴파일 과정이 없는 동적 언어이기 때문에 다른 정적인 언어와 비교했을 때 빠른 시간안에 스크립트 코드를 작성할 수 있도록 도와줌
  • 단점 : 성능이나 보안에 조금 취약하고, 내부에서 제공되는 기능이 제한적이고 관련된 도구가 상대적으로 적은 편임
  • 비동기 프로그래밍
  • 어떤 코드가 실행되고 완료되는걸 기다리지 않고 다음 코드를 먼저 실행하는것
  • AJAX
  • 자바스크립트의 라이브러리 중 하나
  • 자바스크립트를 이용해 비동기적으로 서버와 브라우저가 데이터를 교환할 수 있는 통신 방식
  • 페이지 전체를 다시 로드할 필요 없이 일부만을 갱신하여 데이터 변경이 가능
  • JSON
  • 자바스크립트의 객체를 만든는 표현식으로 key, value쌍으로 이루어져 있음
  • 콜백함수
  • 다른 함수의 인자로써 이용되는 함수를 말함
  • 어떤 이벤트에 의해 호출되어지는 함수를 말함
  • 비동기 처리시 콜백 함수를 사용
  • 단점
    • 콜백지옥에 빠지면 로직이 어려워지고 가독성이 떨어짐
    • Promise 혹은 Async/Await를 이용해 해결
  • Promise
  • 비동기 프로그래밍을 위해 사용
  • 콜백함수의 단점을 보완하며 동기 처리 시점을 명확하게 표현
  • Async, Await
  • 자바스크립트 비동기방식 패턴중 가장 최근에 나온 기술
  • 기존 콜백과 Promise의 기능은 살리고 코드의 가독성을 높여줌
  • 스코프
  • var : 함수 단위 스코프를 가짐 재선언 및 재할당 가능
  • let : 블록 단위 스코프를 가짐 재선언만 가능
  • const : 블록 단위 스코프를 가짐 재선언 및 재할당 불가능
  • 호이스팅
  • 자바스크립트 함수가 실행되기 전에 함수안에 필요한 변수값을들 모두 모아서 유효 범위의 최상단에 선언하는 것
  • var 변수 선언과 일반 함수 선언문에서만 호이스팅이 일어남
  • 실제로 코드가 끌어올려지는 것은 아니며, 자바스크립트 Parser 내부적으로 끌어올려 처리하는 것
    (실제 메모리에서는 변화가 없음)
  • 익명함수
  • 함수 표현식으로 함수를 선언할때 콜백함수에서 사용
  • 클로저
  • 반환된 내부함수가 자신이 선언됐을 때의 환경(Lexical environment)인 스코프를 기억하여 자신이 선언됐을 때의 환경(스코프) 밖에서 호출되어도 그 환경(스코프)에 접근할 수 있는 함수를 말함
  • 즉, 함수가 선언되는 그 순간에 함수가 실행될 때 실제 외부변수에 접근하기 위한 객체이다.
  • 클로저를 무자비하게 사용할 경우 가비지컬렉션 대상이 될 객체들이 메모리상에 존재하게 되므로, 클로저를 남발하게 되면 Overflow 가 발생할 수 있으니 유의해야한다.
  • 타입스크립트
  • MS에서 개발하고 관리하는 오픈소스 프로그래밍 언어!
  • ES5, ES6 문법을 포함하고 있음
  • 정적 타입 언어이기 때문에 컴파일 시간이 조금 걸리지만 안정성을 보장함
    (컴파일 단계에서 오류를 포착할 수 있는 장점이 존재)
  • 네임스페이스, 클래스 및 인터페이스를 지원함
  • 함수형 프로그래밍?
  • 부수 효과를 없애고 순수 함수를 만들어 모듈화 수준을 높이는 프로그래밍 패러다임!
  • 인풋과 아웃풋이 있고 외부 요인에 영향을 받지않아 철저히 독립적임, 다른것을 참조하지 않고 오로지 자신에게 주어진 것들로만 작업함
  • 부수 효과
    • 외부의 상태를 변경하는 것 또는 함수로 들어온 인자의 상태를 직접 변경하는 것
  • 순수 함수
    • 부수 효과가 없는 함수 즉, 어떤 함수에 동일한 인자를 주었을 때 항상 같은 값을 리턴하는 함수
      (외부의 상태를 변경하지 않는 함수)
  • 장점
    • 모듈화 수준이 높으면 재사용성이 높고 좋은 프로그래밍이라고 할 수 있음
  • 반응형 프로그래밍?
  • 데이더 흐름과 전달에 관한 프로그래밍 패러다임!
  • 데이터의 흐름을 먼저 정의하고 데이터가 변경되었을때 연관된 함수나 수식이 업데이트 되는 방식
    ex)엑셀의 월매출을 더한것이 연매출이 되는것
  • 함수형 프로그래밍의 지원을 받음
  • 기존 자바에서 사용했던 Pull방식이 아닌, Push방식의 프로그래밍 개념
  • 복잡한 비동기 프로그램을 쉽게 만들 수 있도록 도와줌
  • RxJS
  • 이벤트 스트림과 데이터를 쉽게 만들고 다를 수 있도록 도와주는 라이브러리!
  • JavaScript로 큰 규모의 비동기 애플리케이션 제작시 "콜백 지옥"을 개선하기위해 나온 Promise, async/await처럼 또다른 솔루션 중 하나
  • 프레임워크 vs 라이브러리
  • 프레임워크 : 뼈대나 기반구조를 뜻함으로써 프로그래밍을 진행할때 필수적인 코드, 알고리즘 등과 같이 어느 정도의 구조를 제공해 주기 때문에 이 뼈대 위에서 코드를 작성하여 개발함
  • 라이브러리 : 특정 기능에 대한 도구 또는 함수들의 집합으로써 프로그래머가 어떠한 기능을 수행하기 위해서 도움을 주는 것들을 제공해 주는 역할
  • 차이점은 흐름을 누가 가지고 있는지의 차이!
  • 프레임워크는 전체적인 흐름을 자체적으로 가지고 있음
  • 라이브러리는 프로그래머가 전체적인 흐름을 가지고 있음

✍소프트웨어 아키텍처

  • 스프링 프레임워크
  • 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크
  • Maven
  • 프로젝트 관리 도구
  • 프로젝트에 필요한 라이브러리를 자동으로 관리해주는 빌드 도구
  • MVC 패턴
  • 하나의 애플리케이션을 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴
  • Model : 애플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
  • View : 사용자에게 보여지는 UI부분
  • Controller : 사용자의 입력(Action)을 받고 처리하는 부분
  • MVVM 패턴
  • Model + View + View Model을 합친 용어
  • Model : 애플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
  • View : 사용자에게 보여지는 UI부분
  • View Model : View를 표현하기 위해 만든 Model, View를 나타내 주기 위한 Model이자 View를 나타내기 위한 데이터 처리를 하는 부분

✍데이터베이스

  • Join
  • 2개 이상의 테이블을 연결하여 데이터를 검색하는 방법
  • 기본키, 외래키 값을 사용함
  • SQL
  • 데이터베이스 질의에 사용되는 언어
  • 종류
    • DDL : 테이블 구조를 정의하는데 사용되는 명령어 create, alter, drop, truncate
    • DML : 데이터베스에 들어있는 데이터를 조작하기위한 명령어 select, update, insert, delete
    • DCL : 데이터베이스에 접근하거나 객체에 권한을 주는 역할을 하는 명령어 commit, rollback, grant, revoke
  • 인덱스
  • 데이터를 정렬하여 데이터 검색과 정렬 작업의 속도를 높이기 위해 사용되는것

✍기타

  • Rest?
  • 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 것
  • 다음의 구성으로 이루어져 있음
    • 자원(Resource) - URL
    • 행위(Verb) - Http Method
    • 표현(Representations)
  • 자원에 대한 행위는 Http Method로 표현
  • |Http Method|역할|
    |:------:|:------:|
    |GET|GETd을 통해 해당 리소스를 조회|
    |POST|POST를 통해 해당 URL을 요청하면 리소스 생성|
    |PUT|PUT을 통해 해당 리소스를 수정|
    |DELETE|DELETE를 통해 해당 리소스를 삭제|ak
  • Restful API?
  • REST 아키텍처의 제약 조건을 준수해 설계된 API를 뜻함
  • 특징 : 확장성과 재사용성을 높여 유지보수 및 운용이 편리함
  • Redux
  • 자바스크립트 애플리케이션에서 상태관리위해 사용하는 라이브러리
  • 규모가 큰 프로젝트에서 유용함
  • 3가지 원칙
    • 단 하나의 store를 사용
    • store안의 모든 state값은 읽기 전용이어야 함
      (변경을 위해서는 action > dispatcher를 이용)
    • 순수 함수로 변경
      (reducer는 이전 상태를 변경하지 않고 새로운 상태를 리턴함)
  • 크로스 브라우징
  • 각기 다른 브라우저에서 동일한 정보 제공을 위한 기능
  • Get방식 vs Post방식
  • Get방식
    • 데이터를 전달할 때 URL에 데이터를 포함시켜 요청
    • 데이터를 Header에 포함시켜 전송
    • URL에 데이터가 노출되어 보안에 취약
    • 전송하는 길이에 제한이 있음
  • Post방식
    • URL에 데이터를 노출하지 않고 요청
    • 데이터를 Body에 포함시겨 전송
    • URL에 데이터가 노출되지 않아 기본보안은 되어있음
    • 전송하는 길이에 제한이 없음
  • HTTPS
  • 보안이 강화된 HTTPS를 의미
  • 암호화되지 않는 방식으로 통신할 경우 메세지의 감청으로 인한 보안 문제 발생 가능
  • 도커
  • 리눅스 컨테이너를 만들고 사용할 수 있도록 하는 컨테이너화 기술
  • 클라우드
  • 물리적인 서버가 없어도 인터넷에 접속하여 자원을 사용할 수 있게 하는 컴퓨터 리소스 이용형태
  • AWS(Amazon Wen Services)
  • 아마존에서 제공하는 클라우드 서비스
  • 네트워킹 기반으로 가상 컴퓨터와 스토리지 네트워크 인프라 등 다양한 서비스를 제공
  • 데브옵스
  • 개발(Developement)과 운영(Operation)의 합성어
  • 장점
    • 속도, 빠른 배포, 안정성, 확장 가능, 협업 강화

✍기술 질문 외

  • 우리회사에 지원한 이유는?
  • 프론트엔드에 지원한 이유는?
  • 성격 장단점 및 강약점
  • 취미가 무엇인지
  • 좋아했던 과목
  • 팀프로젝트 경험 및 의견결정시 어떤식으로 진행하는지? 불화는 없었는지
  • 살면서 가장 즐거웠던, 힘들었던 경험
profile
front-end developer

관심 있을 만한 포스트

0개의 댓글