면접 예상 질문
1. 팀의 협력을 위해서 내가 한 일이 무엇인가?
협력을 위해서 제가 제일 신경 썼던 부분은 공유였습니다. 각자의 부분을 잘 만드는 것도 중요하지만 하나의 프로젝트가 원활하게 동작하기 위해서는 각자의 파트가 잘 맞물려야 한다고 생각을 했기 때문에 저는 매일 프로젝트를 시작할 때와 끝낼 때에 팀원이 모여서 회의를 했으며, 아침에는 각자의 진행계획에 대해서 간단하게 이야기를 하고 하루를 끝내기 전에 아침에 이야기했던 부분을 얼마큼 진행을 했으며, 동작을 위해서 어떻게 구동이 되는지 설명을 하고, 어려웠던 점이나 문제가 있었던 점을 기록 노트에 적어가며 다음계획에 맞추어 갈 수 있도록 하였습니다.
2. 프로젝트를 하면서 어려웠던 점과 극복해 낸 과정
최종 프로젝트의 목표가 서버를 통한 배포로 웹 애플리케이션을 동작하기 위해 부트캠프 교육과정에서 자세하게 배우지 못했던 프런트 엔드와 서버 배포에 대해서 직접 찾아가면서 만들어야 했던 부분이 어려움이 있었습니다. 이 난관을 극복하기 위해서 먼저 모르는 부분은 구글링을 통해 초기에 구축이 필요한 부분을 찾아서 만들어 보았으며 제작 과정에 생기는 오류를 만났을 때에 이 부분에 도움을 줄 수 있는 튜터님에게 찾아가 해결방안에 대해서 질문을 하여 문제를 해결해 나갔습니다.
3. postgreSQL을 사용한 이유
기존 Django에 포함되어 있는 SQLite는 배포를 위해 사용되기에 부족한 부분이 있어 외부 SQL를 필요하였으며,
Django프레임워크에서는 PostgreSQL을 지원하고 있는 것을 알았습니다. 그로 인해 장고의 ORM을 통해서 쿼리를 자동으로 변환하여 작성을 해주는 부분에서 쉽게 프로젝트를 만들 수 있다고 판단하여 DB를 채택하게 되었습니다.
4. 남들과 달리 자신이 있는 부분
남들과 다르다고 생각하는 부분으로는 질문하는 습관인거 같습니다. 프로젝트를 만들면서도 새로운 아이디어가 있어 추가하고 싶은 사항이 생겼을 때에 부조껀적으로 반영하는 것이 아닌 해당 부분으로 인하여 생길 수 있는 문제가 있는지 질문하고 신중하게 판단하여 결정하는 것과 의문이 생기는 부분 또는 모르는 부분에 대해서 거리낌 없이 질문하려고 하는 부분에서 빠르게 문제를 해결해 나갔던 부분이 남들과 다른 부분이었다고 생각합니다.
5. 지금것 해온 직장대신 개발자를 선택한 이유
전 직장에서 품질 보증 부서에서 직장생활을 했지만 업무의 특성상 회사에서 생산되어 나온 물건에 책임을 지고 검증하고 문제가 생기면 대신 나가서 하는 부분에서 회의감이 오게 되어 내가 직접 만드는 일을 해보고 싶다는 생각이 들어 방법을 찾던 중에 대학시절 로봇을 만들면서 가볍게 사용했던 프로그래밍을 통해 내가 원하는 것을 직접 구현해 냈던 좋은 기억이 있어 개발에 대해서 자세히 배워보고 싶어졌으며, 개발 지식을 넓히기 위해서 부트캠프를 참여하였습니다. 코딩에 대한 긍정적인 느낌이 들어 개발자로 일해보고 싶다는 생각이 들어 이 분야에 지원하게 되었습니다.
CS 공부
1. DDL이란??
DDL은 데이터베이스에서 데이터 구조를 정의하고 관리하는 데 사용되는 SQL의 하위 집합을 말합니다. 이것을 이용하여 데이터베이스 구조 및 스키마를 생성, 수정, 삭제를 할 수 있습니다.
또한 다른 하위 집합으로는 DML(데이터베이스 내의 데이터를 조작, 삽입, 수정, 삭제), DCL(데이터 제어 언어 사용자 권한 제어), TCL(트랜잭션 제어 언어 데이터베이스 트랜잭션 처리 단위 제어)
2. TCP와 UDP
특성 | TCP | UDP |
연결 방식 | 연결 지향적 | 비연결 지향적 |
신뢰성 | 신뢰성 보장 (재전송, 순서 보장) | 신뢰성 없음 (재전송, 순서 보장 안 됨) |
속도 | 상대적으로 느림 | 빠름 |
흐름 및 혼잡 제어 | 있음 | 없음 |
전송 단위 | 세그먼트 (Segment) | 데이터그램 (Datagram) |
사용 사례 | 웹 브라우징, 이메일, 파일 전송 등 | 스트리밍, 온라인 게임, VoIP 등 |
3. LLM에 대해서
LLM은 "Large Language Model"의 약자로 인공지능(AI) 연구의 일환으로, 방대한 양의 텍스트 데이터를 학습하여 자연어를 이해하고 생성할 수 있는 모델을 의미합니다. 이러한 모델은 자연어 처리(NLP) 분야에서 사용되며, 텍스트 기반의 다양한 작업을 수행할 수 있습니다.
4. JSON에 대해서
JSON은 데이터를 저장하는 형식중 하나이며, 어레이 또는 딕셔너리의 형태로 저장이 가능합니다. 주로 Javascript에서 데이터를 전송할 때에 사용을 하며, 데이터를 직관적으로 확인하기 용의 하며 탐색 시간이 짧은 장점이 있습니다.
5. typescirpt 란?
JavaScript의 문법을 그대로 따르면서도 정적 타입 검사 기능을 추가하여 코드의 안정성과 가독성을 높이는 것을 목표로 합니다.
- 정적 타입 검사: TypeScript는 변수, 함수의 인자, 반환 값 등에 타입을 명시할 수 있습니다. 이를 통해 컴파일 시점에 타입 오류를 발견할 수 있어, 런타임 오류를 줄일 수 있습니다.
- 객체 지향 프로그래밍 지원: 클래스, 인터페이스, 상속 등 객체 지향 프로그래밍의 개념을 지원하여, 대규모 애플리케이션 개발에 적합한 구조를 제공합니다.
- ES6+ 기능 지원: TypeScript는 최신 ECMAScript 표준의 기능(예: 화살표 함수, 템플릿 리터럴, 비구조화 할당 등)을 포함하고 있으며, 이를 하위 호환성 있는 JavaScript로 트랜스파일(transpile)합니다.
- 툴링과 에디터 지원: TypeScript는 Visual Studio Code를 비롯한 여러 IDE에서 강력한 자동 완성, 코드 탐색, 리팩토링 도구를 제공하여 개발 생산성을 높입니다.
- 점진적 채택 가능: 프로젝트의 일부 파일에서만 TypeScript를 사용하거나, 기존 JavaScript 파일에 점진적으로 TypeScript 기능을 추가할 수 있습니다. 이는 기존 JavaScript 프로젝트에 TypeScript를 쉽게 통합할 수 있도록 합니다.
6. node.js는?
Node.js는 JavaScript를 서버 측에서 실행할 수 있게 해주는 오픈 소스 런타임 환경입니다.
- 비동기 I/O 처리: Node.js는 이벤트 기반의 비동기 프로그래밍 모델을 사용합니다. 이를 통해 서버는 I/O 작업(파일 읽기/쓰기, 네트워크 요청 등)을 처리하는 동안 블로킹 없이 다른 작업을 계속 수행할 수 있어 높은 처리 성능을 제공합니다.
- 싱글 스레드 아키텍처: Node.js는 싱글 스레드 이벤트 루프를 사용하여 요청을 처리합니다. 이는 멀티 스레드 방식보다 메모리 사용량이 적고, 상태 관리가 단순하여 개발이 용이합니다. 하지만 Node.js는 필요할 경우 백그라운드에서 여러 작업을 병렬로 처리할 수 있도록 내부적으로 libuv 라이브러리를 활용하여 스레드를 관리합니다.
- 빠른 실행 속도: Node.js는 Google의 V8 JavaScript 엔진을 기반으로 하기 때문에, 매우 빠른 코드 실행 속도를 자랑합니다. V8 엔진은 JavaScript 코드를 기계어로 컴파일하여 실행하므로 성능이 뛰어납니다.
- NPM (Node Package Manager): Node.js는 NPM이라는 강력한 패키지 관리 도구를 제공합니다. NPM을 통해 다양한 오픈 소스 라이브러리와 모듈을 손쉽게 설치하고 관리할 수 있으며, 이를 통해 개발 속도를 크게 향상시킬 수 있습니다.
- 크로스 플랫폼 지원: Node.js는 Windows, macOS, Linux 등 다양한 운영 체제에서 사용할 수 있습니다. 이를 통해 개발자는 플랫폼에 구애받지 않고 동일한 코드베이스를 활용할 수 있습니다.
- 확장성: Node.js는 모듈 기반의 아키텍처를 채택하고 있어, 필요한 기능을 모듈로 분리하여 관리할 수 있습니다. 이로 인해 애플리케이션의 확장성이 높아지고 유지 보수가 쉬워집니다.
- 실시간 애플리케이션 개발에 적합: 비동기 이벤트 처리 모델 덕분에 Node.js는 실시간 채팅, 스트리밍, 온라인 게임 등과 같은 실시간 데이터 전송이 중요한 애플리케이션 개발에 특히 적합합니다.\
위와 같은 장점을 가지고 있습니다.
'코딩 정리함' 카테고리의 다른 글
객체지향 프로그래밍(OOP)이란? (0) | 2024.09.23 |
---|---|
예상 질문 답변 준비 (0) | 2024.08.29 |
면접 대비 질문 (0) | 2024.08.26 |
Docker를 사용하는 이유 (0) | 2024.08.26 |
CS 면접 예상 질문 답변 (0) | 2024.08.23 |
면접 예상 질문
1. 팀의 협력을 위해서 내가 한 일이 무엇인가?
협력을 위해서 제가 제일 신경 썼던 부분은 공유였습니다. 각자의 부분을 잘 만드는 것도 중요하지만 하나의 프로젝트가 원활하게 동작하기 위해서는 각자의 파트가 잘 맞물려야 한다고 생각을 했기 때문에 저는 매일 프로젝트를 시작할 때와 끝낼 때에 팀원이 모여서 회의를 했으며, 아침에는 각자의 진행계획에 대해서 간단하게 이야기를 하고 하루를 끝내기 전에 아침에 이야기했던 부분을 얼마큼 진행을 했으며, 동작을 위해서 어떻게 구동이 되는지 설명을 하고, 어려웠던 점이나 문제가 있었던 점을 기록 노트에 적어가며 다음계획에 맞추어 갈 수 있도록 하였습니다.
2. 프로젝트를 하면서 어려웠던 점과 극복해 낸 과정
최종 프로젝트의 목표가 서버를 통한 배포로 웹 애플리케이션을 동작하기 위해 부트캠프 교육과정에서 자세하게 배우지 못했던 프런트 엔드와 서버 배포에 대해서 직접 찾아가면서 만들어야 했던 부분이 어려움이 있었습니다. 이 난관을 극복하기 위해서 먼저 모르는 부분은 구글링을 통해 초기에 구축이 필요한 부분을 찾아서 만들어 보았으며 제작 과정에 생기는 오류를 만났을 때에 이 부분에 도움을 줄 수 있는 튜터님에게 찾아가 해결방안에 대해서 질문을 하여 문제를 해결해 나갔습니다.
3. postgreSQL을 사용한 이유
기존 Django에 포함되어 있는 SQLite는 배포를 위해 사용되기에 부족한 부분이 있어 외부 SQL를 필요하였으며,
Django프레임워크에서는 PostgreSQL을 지원하고 있는 것을 알았습니다. 그로 인해 장고의 ORM을 통해서 쿼리를 자동으로 변환하여 작성을 해주는 부분에서 쉽게 프로젝트를 만들 수 있다고 판단하여 DB를 채택하게 되었습니다.
4. 남들과 달리 자신이 있는 부분
남들과 다르다고 생각하는 부분으로는 질문하는 습관인거 같습니다. 프로젝트를 만들면서도 새로운 아이디어가 있어 추가하고 싶은 사항이 생겼을 때에 부조껀적으로 반영하는 것이 아닌 해당 부분으로 인하여 생길 수 있는 문제가 있는지 질문하고 신중하게 판단하여 결정하는 것과 의문이 생기는 부분 또는 모르는 부분에 대해서 거리낌 없이 질문하려고 하는 부분에서 빠르게 문제를 해결해 나갔던 부분이 남들과 다른 부분이었다고 생각합니다.
5. 지금것 해온 직장대신 개발자를 선택한 이유
전 직장에서 품질 보증 부서에서 직장생활을 했지만 업무의 특성상 회사에서 생산되어 나온 물건에 책임을 지고 검증하고 문제가 생기면 대신 나가서 하는 부분에서 회의감이 오게 되어 내가 직접 만드는 일을 해보고 싶다는 생각이 들어 방법을 찾던 중에 대학시절 로봇을 만들면서 가볍게 사용했던 프로그래밍을 통해 내가 원하는 것을 직접 구현해 냈던 좋은 기억이 있어 개발에 대해서 자세히 배워보고 싶어졌으며, 개발 지식을 넓히기 위해서 부트캠프를 참여하였습니다. 코딩에 대한 긍정적인 느낌이 들어 개발자로 일해보고 싶다는 생각이 들어 이 분야에 지원하게 되었습니다.
CS 공부
1. DDL이란??
DDL은 데이터베이스에서 데이터 구조를 정의하고 관리하는 데 사용되는 SQL의 하위 집합을 말합니다. 이것을 이용하여 데이터베이스 구조 및 스키마를 생성, 수정, 삭제를 할 수 있습니다.
또한 다른 하위 집합으로는 DML(데이터베이스 내의 데이터를 조작, 삽입, 수정, 삭제), DCL(데이터 제어 언어 사용자 권한 제어), TCL(트랜잭션 제어 언어 데이터베이스 트랜잭션 처리 단위 제어)
2. TCP와 UDP
특성 | TCP | UDP |
연결 방식 | 연결 지향적 | 비연결 지향적 |
신뢰성 | 신뢰성 보장 (재전송, 순서 보장) | 신뢰성 없음 (재전송, 순서 보장 안 됨) |
속도 | 상대적으로 느림 | 빠름 |
흐름 및 혼잡 제어 | 있음 | 없음 |
전송 단위 | 세그먼트 (Segment) | 데이터그램 (Datagram) |
사용 사례 | 웹 브라우징, 이메일, 파일 전송 등 | 스트리밍, 온라인 게임, VoIP 등 |
3. LLM에 대해서
LLM은 "Large Language Model"의 약자로 인공지능(AI) 연구의 일환으로, 방대한 양의 텍스트 데이터를 학습하여 자연어를 이해하고 생성할 수 있는 모델을 의미합니다. 이러한 모델은 자연어 처리(NLP) 분야에서 사용되며, 텍스트 기반의 다양한 작업을 수행할 수 있습니다.
4. JSON에 대해서
JSON은 데이터를 저장하는 형식중 하나이며, 어레이 또는 딕셔너리의 형태로 저장이 가능합니다. 주로 Javascript에서 데이터를 전송할 때에 사용을 하며, 데이터를 직관적으로 확인하기 용의 하며 탐색 시간이 짧은 장점이 있습니다.
5. typescirpt 란?
JavaScript의 문법을 그대로 따르면서도 정적 타입 검사 기능을 추가하여 코드의 안정성과 가독성을 높이는 것을 목표로 합니다.
- 정적 타입 검사: TypeScript는 변수, 함수의 인자, 반환 값 등에 타입을 명시할 수 있습니다. 이를 통해 컴파일 시점에 타입 오류를 발견할 수 있어, 런타임 오류를 줄일 수 있습니다.
- 객체 지향 프로그래밍 지원: 클래스, 인터페이스, 상속 등 객체 지향 프로그래밍의 개념을 지원하여, 대규모 애플리케이션 개발에 적합한 구조를 제공합니다.
- ES6+ 기능 지원: TypeScript는 최신 ECMAScript 표준의 기능(예: 화살표 함수, 템플릿 리터럴, 비구조화 할당 등)을 포함하고 있으며, 이를 하위 호환성 있는 JavaScript로 트랜스파일(transpile)합니다.
- 툴링과 에디터 지원: TypeScript는 Visual Studio Code를 비롯한 여러 IDE에서 강력한 자동 완성, 코드 탐색, 리팩토링 도구를 제공하여 개발 생산성을 높입니다.
- 점진적 채택 가능: 프로젝트의 일부 파일에서만 TypeScript를 사용하거나, 기존 JavaScript 파일에 점진적으로 TypeScript 기능을 추가할 수 있습니다. 이는 기존 JavaScript 프로젝트에 TypeScript를 쉽게 통합할 수 있도록 합니다.
6. node.js는?
Node.js는 JavaScript를 서버 측에서 실행할 수 있게 해주는 오픈 소스 런타임 환경입니다.
- 비동기 I/O 처리: Node.js는 이벤트 기반의 비동기 프로그래밍 모델을 사용합니다. 이를 통해 서버는 I/O 작업(파일 읽기/쓰기, 네트워크 요청 등)을 처리하는 동안 블로킹 없이 다른 작업을 계속 수행할 수 있어 높은 처리 성능을 제공합니다.
- 싱글 스레드 아키텍처: Node.js는 싱글 스레드 이벤트 루프를 사용하여 요청을 처리합니다. 이는 멀티 스레드 방식보다 메모리 사용량이 적고, 상태 관리가 단순하여 개발이 용이합니다. 하지만 Node.js는 필요할 경우 백그라운드에서 여러 작업을 병렬로 처리할 수 있도록 내부적으로 libuv 라이브러리를 활용하여 스레드를 관리합니다.
- 빠른 실행 속도: Node.js는 Google의 V8 JavaScript 엔진을 기반으로 하기 때문에, 매우 빠른 코드 실행 속도를 자랑합니다. V8 엔진은 JavaScript 코드를 기계어로 컴파일하여 실행하므로 성능이 뛰어납니다.
- NPM (Node Package Manager): Node.js는 NPM이라는 강력한 패키지 관리 도구를 제공합니다. NPM을 통해 다양한 오픈 소스 라이브러리와 모듈을 손쉽게 설치하고 관리할 수 있으며, 이를 통해 개발 속도를 크게 향상시킬 수 있습니다.
- 크로스 플랫폼 지원: Node.js는 Windows, macOS, Linux 등 다양한 운영 체제에서 사용할 수 있습니다. 이를 통해 개발자는 플랫폼에 구애받지 않고 동일한 코드베이스를 활용할 수 있습니다.
- 확장성: Node.js는 모듈 기반의 아키텍처를 채택하고 있어, 필요한 기능을 모듈로 분리하여 관리할 수 있습니다. 이로 인해 애플리케이션의 확장성이 높아지고 유지 보수가 쉬워집니다.
- 실시간 애플리케이션 개발에 적합: 비동기 이벤트 처리 모델 덕분에 Node.js는 실시간 채팅, 스트리밍, 온라인 게임 등과 같은 실시간 데이터 전송이 중요한 애플리케이션 개발에 특히 적합합니다.\
위와 같은 장점을 가지고 있습니다.
'코딩 정리함' 카테고리의 다른 글
객체지향 프로그래밍(OOP)이란? (0) | 2024.09.23 |
---|---|
예상 질문 답변 준비 (0) | 2024.08.29 |
면접 대비 질문 (0) | 2024.08.26 |
Docker를 사용하는 이유 (0) | 2024.08.26 |
CS 면접 예상 질문 답변 (0) | 2024.08.23 |