반응형

> 이 글에 대한 정리

 

OOP(Object Oriented Programming)

OOP는 객체의 관점에서 프로그래밍을 하는 것이다. 추상화, 캡슐화, 상속, 다형성과 같은 특징이 있으며 코드의 재사용성과 중복제거가 가장 큰 목적이다.

 

 

Exception, Error 차이

Error는 컴파일 시 문법적인 오류와 런타임 시 널 포인트 참조와 같은 오류로 프로세스에 심각한 문제를 야기시켜 프로세스를 종료 시킬 수 있다. 또한, 하드웨어의 오동작, 고장 등 개발자가 미리 예측할 수 없다.

 

Exception은 시스템 동작 중 예기치 않았던 이상 상태가 발생하여 수행 중인 프로그램이 영향을 받는것으로. JAVA에서는 try문으로 이미 예방할 수 있다.

 

 

Statement Prestatement 차이

두 명령어는 아래와 같은 실행 단계를 거친다.

 

1) 쿼리 문장 분석

2) 컴파일

3) 실행

 

statement는 매번 쿼리를 수행 할 때 마다 1~3단계를 거친다. 무슨 SQL 인지 파악하지는 좋지만 매번 컴파일 하지 때문에 성능에 좋지 않다. 하지만 Dynamic SQL을 사용할 경우는 statement를 사용해야한다. prestatement는 1~3단계를 캐시에 저장하기 때문에 재사용 측면에서 좋다. 쿼리를 반복적으로 수행한다면 DB에 부하를 줄여준다.

 

 

Connection Pool을 사용하는 이유

미리 커넥션을 생성하여 client에서 접속 시 이용가능 하도록 한 후 사용 후 pool을 회수하는 방식. JAVA에서 DB와 Connection을 맺는 일은 매우 느리며 자원을 많이 소비한다. 사전의 일정량의 Connection 객체를 만들어 공유된 저장소에 담아둔다. 이전에는 직접 작성하였다고 한다 지금은 JDBC로 대체 하고 있다. Connection Pool은 큐넷에서 시험을 접수하는 것을 예로 들 수 있다. Pool은 10개 할당했다고 가정하면, 10명의 접속자는 홈페이지에서 DB와 접속하여 작업을 하고 이후에 들어온 사람들은 대기 순번이 생기고 차례를 기다리는 것이다.

 

 

DI(Dependency Injection)

DI 의존성 주입. 스프링 IOC 컨테이너의 핵심 개념 중 하나이다. 소스코드의 변경 없이 환경 설정(sprinc config.xml, bean 객체 등) 만으로 프로그램을 제어할 수 있다. 즉 클래스간의 의존관계를 빈 설정  정보를 바탕으로 컨테이너가 자동으로 연결해주는 것을 말한다.

 

 

그 외 Spring의 특징

1) AOP - 트랜잭션이나 로깅, 보안과 같이 공통적으로 필요로 하는 모듈을 실제 핵심 모듈로 분리해서 적용 할 수 있다. 공통된 기능을 재사용하는 기법. (이해만 함)

2) POJO - 컨테이너에 저장되는 객체는 특정한 인터페이스를 구현하거나 특정 클래스를 상속받지 않아도 된다.

 

 

MVC 패턴이란

Model, View, Controller로 프로젝트를 구성할 때 구성 요소를 세 가지 역할로 구분한 디자인 패턴.

 

 

MVC 패턴의 장점

서로 분리되어 각자의 역할에 집중 할 수 있게끔 하여 유지보수성, 애플리케이션의 확장성, 유연성 증가, 중복 코딩 문제점을 사라지게 해준다. 유연성이란 클라이언트의 새로운 요구사항에 대해 최소한의 비용으로 보다 유연하게 대체하는 것을 말한다.

 

 

Ouath 2.0 Token이란

인증과 권한부여에 관련된 기능이다. 서버와 클라이언트 사이에 인증을 완료하면 서버는 권한 부여의 결과로써 accee token을 발행한다. ouath 2.0은 외부 서비스의 인증 및 권한 부여를 관리하는 범용 프레임워크이다. 비밀번호를 제공하지 않고 다른 웹싸이트 상의 자신들의 정보에 대해 웹싸이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단이다. 예를 들면 페이스북, 카카오, 구글 ID로 회원가입을 하는 것.

 

 

Outah 2.0 Token 발생 Flow

client와 resource owner 간 요청과 반응을 3단계로 걸쳐서 부여 및 인증한다. (자세하진 않음)

 

 

JWT란?

JWT는 jsonwebtoken의 약어이다.(놀라웠다) JSON 포맷을 이용하여 사용자에 대한 속성을 저장하는 cliam 기반의 Web Token이다. 주로 회원 인증이나 정보 전달에 사용한다. 또한, *Cros를 해결하기 위해 사용한다.

*cros는 cross origin resource sharing의 약어로 port 번호가 다른 환경과 통신한 때 발생하는 이슈.

 

 

Ouath 2.0 과 JWT에 대한 차이(뇌피셜)

Ouath 2.0은 권한과 인증에 중점을 두고 있는 것 같다. 그 예시로 ouath를 사용하기 위해서는 릴레이션에 role이라는 필드가 필요하다. 해당 필드로 role이 0이면 일반 회원, 1이면 admin과 같이 구분할 수 있기 때문이다. 그리고 그 권한을 기준으로 자신의 정보를 본인만 조회할 수 있게해준다. JWT는 정보를 안전하게 전달해주는데 초점을 맞추고 있는것 같았다. 해당 정보를 열람하기 위해선 sign key가 필요하고, 이 key를 모르면 jsonwebtoken이 발행해주는 정보를 복호화하여 사용할 수 없기 때문이다. sign key가 특별한 건 아니고 '11111' 또는 'abadjflkjalkdsjf' 과 같이 남들은 모르게 지정해주면 된다.

 

 

Hint란

오라클 옵티마이저에게 SQL 문 실행을 위한 데이터 스캐닝하는 경로, 조인하는 방법 등을 알려주기 위해 SQL 사용자가 SQL 구문에 작성하는 것을 말한다. 오라클이 항상 최적의 실행 결로를 만들어 내기는 불가능하기 때문에 개발자가 직접 최적의 실행 경로를 작성한다.

 

 

Plan 이란

옵티마이저는 우리에게 어떤 경로로 테이블에 접근할 건지, 어떤 방식으로 조인하는지, 어떤 인덱스 자원을 사용하는지 등에 대한 계획을 알려준다. 해당 계획을 통해 SQL을 수정하여 자원의 낭비를 줄일 수 있다.

 

 

테이블 정규화란 ?

정규화는 릴레이션 내에서 중복을 제거하는 과정이다. 즉 중복을 줄이고 무결성을 향상 시킨다.


마치며..

🤦‍♂️ 그당시 질문에 대한 답변을 지금에서야 회고하면서 나 자신에 대해 더욱 반성하게 되었다. 또한, 내가 왜 그동안 면접에서 탈락했는지.. 얼마나 부족한 사람인지 깨달았다. 코딩 능력도 중요하다. 하지만 본질이 더욱 중요하다는 것을 알게되었다. 여기에 없는 답변은 천천히 이어나갈 예정이다

반응형

'취준 > 면접 준비' 카테고리의 다른 글

[면접 준비] 빅데이터 엔지니어  (0) 2020.06.30
반응형

🍕 서론

운이 좋게  KT 넥스알 빅데이터 엔지니어 신입(인턴) 직무 면접을 보게 되었습니다. 면접을 하루 앞 두고 머리속을 정리하고자 이렇게 글을 남기게 되었습니다.


🍔 본론

● 내가 생각하는 빅데이터 엔지니어란 ?

데이터를 수집, 정제하고 이를 기반으로 다른 구성원들이 해당 데이터를 잘 활용할 수 있도록 도와주는 역활이라고 생각합니다. 또한, 개발된 솔루션을 고객사에서 원할하게 사용할 수 있도록 솔루션 설치 및 기술 지원에 대한 도움까지 주는 포지션이라고 생각합니다. 

 

● OLAP(On-Line Analytical Processing)

온라인상에서 데이터를 분석하고 처리하는 것을 의미합니다. 결과적으로 최종 사용자가 다차원 정보에 직접 접근하여 대화식으로 정보를 분석하고 의사결정하여 활용하는 과정을 말합니다. 최종 사용자가 기업의 전반적인 상황을 이해할 수 있게 하고 의사결정을 지원합니다.

 

● OLTP(On-Line Transaction Processing)

효율적인 기업 운영을 지원하기 위해 트랜잭션(처리 정보)을 수집하고 분류, 저장, 유지보수, 갱신, 검색하는 기능을 수행하는 실시간 거래 처리 시스템으로 기업의 본연 업무를 지원하는 기간 시스템입니다. 예로 항공사의 예약 시스템이나 은행의 창구 업무 시스템을 예로 들 수 있습니다. 

 

● OLAP vs OLTP

OLAP는 의사 결정에 도움되는 데이터에 중점을 두고 OLTP는 현재 발생하는 트랜잭션 처리에 중점을 둡니다.

 

● ETL과 데이터 전처리

데이터웨어하우스를 사용하여 추출(Extract), 변환(Transform), 적재(Load) 하는 일련의 모든 과정을 의미합니다. 이렇게 가공돈 데이터를 통해 머신 러닝이나 딥러닝 모델에 적용합니다. 이처럼 올바른 데이터 분석 결과를 얻기 위해 획득한 데이터를 올바르게 처리하는 과정을 데이터 전처리라고 할 수 있습니다.

 

● 데이터 파이프라인

데이터를 분석하고 활용하기 위해서는 분산되어 저장된 데이터들을 한 곳으로 모으는 작업은 필수입니다. 그리고 이를 모으는 매게채 역활을 데이터 파이프라인 이라고 합니다. 이러한 예로 아파치 카프카를 예로 들 수 있습니다.

 

● NoSQL

기존의 정형화된 데이터 뿐만 아니라 메신저 텍스트, 음성 등 비정형화된 데이터가 많이 발생되고 있습니다. 또한, 클라우드 또는 분산형 컴퓨팅이 주목 받기 시작했습니다. 그리고 NoSQL은 분산형 컴퓨팅에 최적화되어 있고  확장성이 뛰어납니다. SQL이 스키마(릴레이션을)을 구성해 Column을 기반으로 사용되었다면, NoSQL은 Key Value, 그래프 등 다양한 데이터 모델을 가지고 있습니다. SQL은 MySQL, MariDB, SQLite 등이 있으며, NoSQL은 MongDB 가 있습니다.

(사용을 안 해봐서 감이 안온다..1)

 

● 하둡(Hadoop)

대용량 데이터의 저장과 분석이 가능한 오픈소스 프레임 워크입니다. 강력한 병렬 프로세싱을 자랑합니다. 실시간 처리가 아닌 배치 형태로 작동됩니다.

(사용을 안 해봐서 감이 안온다..2)

 

● 맵리듀스와 HDFS

맵리듀스는 하둡의 계산을 담당하고 HDFS는 하둡의 스토리지(공유 데이터)를 담당합니다.

  1. 맵 리듀스 - 데이터 처리를 위한 프로그래밍 모델
  2. HDFS - 네트워크로 연결된 여러 머신의 스토리지를 관리하는 하둡의 저장소 역할

● 카프카(Kafka)

링크드인에서 개발된 프레임 워크로 실시간 스트림 프로세싱 분야에서 하둡과 같은 존재입니다.

 

● 스파크(Spark)

범용적인 분산 환경을 고성능 클러스터링 플랫폼입니다. 메모리에서 동작하므로 하둡보다 100배 빠른 속도를 보장합니다.

 

● 주키퍼(Zookeeper)

분산 시스템을 위한 코디네이터입니다.

 

● 나이파이(Nifi)

데이터 흐름을 모니터링하기 위한 프레임 워크입니다.

 

반응형

'취준 > 면접 준비' 카테고리의 다른 글

[면접준비] 스프링 개발자 / 백엔드 개발자  (0) 2020.08.26

+ Recent posts