기술면접 9

기술면접 - 브라우저의 동작원리

구글의 Chrome V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경(Runtime Environment)인 Node.js의 등장으로 자바스크립트는 웹 브라우저를 벗어나 서버 사이드 애플리케이션 개발에서도 사용되는 범용 개발 언어가 되었다. 하지만 자바스크립트가 가장 많이 사용되는 분야는 역시 웹 브라우저 환경에서 동작하는 웹 페이지/애플리케이션이다. 대부분의 프로그래밍 언어는 운영체제(Operating System, OS) 위에서 실행되지만 웹 애플리케이션의 자바스크립트는 브라우저에서 HTML, CSS와 함께 실행된다. 따라서 브라우저 환경을 고려할 때 보다 효율적인 자바스크립트 프로그래밍이 가능하다. 브라우저의 핵심 기능은 사용자가 참조하고자 하는 웹페이지를 서버에 요청(Request)하고 ..

기술면접 2023.10.19

기술면접 - 자바스크립트의 역사

1. 자바스크립트의 탄생 1995년 당시 약 90%의 시장 점유율로 웹 브라우저 시장을 지배하고 있던 넷스케이프 커뮤니케이션즈(Netscape comunications)는 정적인 HTML을 동적으로 표현하기 위해 경량의 프로그래밍 언어를 도입하기로 결정했다. 그래서 탄생한 것이 브렌던 아이크(Brendan Eich)가 개발한 자바스크립트이다. 자바스크립트는 1996년 3월 넷스케이프 커뮤니케이션즈의 웹 브라우저인 Netscape Navigator 2에 탑재되었고 “Mocha”로 명명되었다. 그해 9월 “LiveScript”로 이름이 변경되었고, 12월 “JavaScript”로 최종 명명되었다. Netscape Navigator 2 이렇게 탄생한 자바스크립트는 현재 모든 브라우저의 표준 프로그래밍 언어가 ..

기술면접 2023.10.19

기술면접 - 프로그래밍의 기본

프로그래밍이란? 프로그래밍이란 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션이다. 이를 위해 먼저 무엇을 실행하기 원하는지에 대한 정의가 필요하다. 다시 말해, 프로그래밍에 앞서 문제(요구사항)를 명확히 이해한 후 적절한 문제 해결 방안의 정의가 필요하다. 이때 요구되는 것이 문제 해결 능력이다. 혹자는 문제 해결 능력을 알고리즘과 동일시하려는 경향이 있지만 반드시 그런 것은 아니다. 물론 문제 해결 능력의 함양에 있어 알고리즘 학습은 큰 도움이 되지만 문제 해결 능력은 더 큰 차원의 능력이다. 대부분의 문제(요구사항)는 복잡하며 명확하지 않을 수도 있다. 따라서 문제(요구사항)를 명확히 이해하는 것이 우선되어야 하며 복잡함을 단순하게 분해(Decomposition)하고 자료를 정리하고 구분(Modeli..

기술면접 2023.10.19

기술면접 - 검색엔진 최적화(SEO)

1. 검색엔진최적화(SEO) 란? 검색엔진최적화란 영어로 ‘Search Engine Optimization’으로 SEO로 줄여서 불립니다. 사람들은 검색결과 사이트의 첫 번째 페이지를 넘어가는 일이 거의 없습니다. 우리도 그렇듯이 보통 상위 3개 글 중 하나를 택하여 읽습니다. 따라서 아무리 좋은 콘텐츠, 좋은 제품 등을 가지고 있어도 검색엔진최적화를 충족 시키지 못하면 절대로 첫 페이지에 노출 될 수 없고 그렇기에 고객에게 나의 존재를 알릴 수가 없습니다. 그럼 검색엔진의 역할은 무엇일까요? 검색엔진이 하는 일은 매우 간단합니다. 고객의 검색어(Query)에는 고객이 원하는 니즈가 담겨 있습니다. 따라서 검색엔진은 고객의 질문 의도에 제일 가까운 답을 제공해 줍니다. 여기서 중요한 것은 “질문 의도에 ..

기술면접 2023.10.19

기술면접 - 객체지향 2

객체지향 프로그래밍(OOP)은 다양한 속성과 개념을 포함하며, 그 중에서도 추상화, 상속, 다형성, 캡슐화는 주요 OOP 속성입니다. 이들을 간단한 설명과 파이썬 코드 예제를 통해 설명하겠습니다. 추상화 (Abstraction): 추상화는 복잡한 시스템이나 개체를 단순화하고 핵심 기능에만 집중하도록 도와주는 개념입니다. 추상화를 통해 세부 사항을 숨기고 중요한 기능에만 집중할 수 있습니다. 구축한 클래스와 세부함수를 외부 파이썬 파일로 빼고 라이브러리 import방식으로 배포하면 기능을 구현할 인터페이스는 제공하되 어떤 식으로 코딩이 되었는지는 알 수 없습니다. 파이썬 코드 예시: from abc import ABC, abstractmethod class Shape(ABC): @abstractmethod..

기술면접 2023.10.17

기술면접 - 객체지향 1

객체지향 프로그래밍(OOP)은 코드를 구조화하고 정리하는 방법 중 하나로, 언어 중에는 C, JAVA와 같은 언어들이 OOP의 원칙을 따르며, 파이썬은 객체지향을 지원하는 언어입니다. 객체지향 프로그래밍은 다양한 분야에서 활용 가능하며, 이는 우리가 이미 일상 생활에서 객체지향적으로 생각하는 방식과 관련이 있습니다. 예를 들어, 비디오 게임을 만든다고 가정해 봅시다. 게임에서 플레이어 객체는 필요한데, 모든 플레이어는 이름, 체력, 기술과 같은 속성을 공유합니다. 이러한 속성을 모든 플레이어 객체에 수동으로 할당하려면 노가다가 많이 필요하고, 실수할 가능성이 높습니다. 또한, 새로운 속성을 추가할 때 문제가 발생할 수 있습니다. # 각 플레이어 객체를 개별적으로 정의 player1_name = "Necr..

기술면접 2023.10.17

기술면접 - GIT & GITHUB

Git과 GitHub는 서로 다른 개념 및 도구로, 버전 관리와 협업을 위한 목적으로 사용됩니다. Git: Git은 분산 버전 관리 시스템(Distributed Version Control System)으로, 개발자가 소스 코드와 프로젝트 파일의 변경 사항을 추적하고 관리하는 도구입니다. Git은 로컬 컴퓨터에서 사용할 수 있으며, 프로젝트의 모든 변경 사항을 추적하고 저장할 수 있습니다. Git은 변경 이력을 저장하고, 다양한 버전을 관리하며, 협업을 위해 다른 개발자와 소스 코드를 공유하는 데 사용됩니다. Git은 명령줄 인터페이스(CLI)를 통해 사용되며, 로컬 저장소(Local Repository)를 통해 변경 사항을 관리합니다. GitHub: GitHub는 Git 리포지토리를 호스팅하고 협업을 ..

기술면접 2023.10.16

프론트엔드 기술면접 - 쿠키, 세션, 토큰 설명

쿠키(Cookie) 쿠키란 브라우저에 저장되는 정보를 말합니다. 브라우저는 사용자의 컴퓨터에 설치된 소프트웨어이므로 쿠키는 사용자가 갖고 있는 정보라고 할 수 있습니다. 다시말해, 쿠키(Cookie)는 웹 브라우저와 웹 서버 간에 정보를 주고받을 때 사용되는 작은 데이터 조각입니다. 이 데이터는 텍스트 형식으로 저장되며, 주로 사용자와 웹 서버 간의 상호 작용을 추적하고 저장하는 데 사용됩니다. 쿠키는 다음과 같은 몇 가지 중요한 특징을 가지고 있습니다: 저장 및 전송: 웹 서버가 클라이언트(브라우저)에 쿠키를 설정하면, 브라우저는 해당 쿠키를 저장하고 나중에 같은 서버로 요청을 보낼 때 해당 쿠키를 함께 전송합니다. 도메인 제한: 쿠키는 특정 도메인 또는 하위 도메인과 관련되며, 한 도메인의 쿠키는 다..

기술면접 2023.10.16

기술면접 - 서버리스 (Serverless)

서버리스(serverless)란 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델입니다. 서버리스 모델에도 서버가 존재하긴 하지만, 애플리케이션 개발에서와 달리 추상화되어 있습니다. 클라우드 제공업체가 서버 인프라에 대한 프로비저닝, 유지 관리, 스케일링 등의 일상적인 작업을 처리하며, 개발자는 배포를 위해 코드를 컨테이너에 패키징하기만 하면 됩니다. 서버리스 애플리케이션은 배포되고 나면 필요에 따라 자동으로 스케일 업되거나 스케일 다운됩니다. 퍼블릭 클라우드 제공업체의 서버리스 오퍼링은 일반적으로 이벤트 기반 실행 모델을 통해 온디맨드로 미터링됩니다. 그러므로 서버리스 기능이 유휴 상태일 때는 아무런 비용도 들지 않습니다. 서버리스 아키텍처 개..

기술면접 2023.10.16