개발 CS 지식 기술면접 질문 정리 (3)- 파이썬, 데이터베이스, 비동기 프로그래밍, react native
1. 파이썬
- 파이썬 프로그램은 기본적으로 하나의 쓰레드에서 실행됨. 하나의 메인 쓰레드가 파이썬 코드를 순차적으로 실행함. 코드를 병렬로 실행하기 위해선 별도의 쓰레드를 생성해야하는데 이를 위해 threading 모듈 사용.
2. 데이터베이스
1) SQL, Non- SQL 이 있고, 나는 관계형 DB만 사용해봄 (RDB)
2) ORM: 객체와 관계를 매핑(연결) 해주는 개념, 관계형 데이터베이스에 제약을 최대한 받지 않으면서 객체를 클래스로 표현하는 것과 같이 RDB를 객체처럼 쉽게 표현 또는 사용하자는 것.
3. 비동기 프로그래밍 (특히 자바 스크립트)
= 쓰레드나 프로세스가 여럿이 돌고 있다.
- 자바 스크립트: 웹브라우저나 node.js의 자바스크립트 엔진에서 실행,
- 시간이 걸리는 작업을 처리하고 call back 함수 리턴,
- 이벤트 루프 : 비동기 작업, 클릭 등의 사용자 입력으로부터 태스크 큐를 타고 들어오는
콜백을 기다리다가 도착하는대로 콜백함수들이 자바스크립트에서 실행되도록 함.
- ES6버전부터 Promise 도입: 비동기 작업을 수행하는 함수가 promise의 객체 반환, 그 생성자에 인자로 들어가는 함수에 첫 번째 인자: 수행할 비동기 작업, 두 번째 인자: 그결과물을 콜백함수에 전달하는 함수
ex) 학생정보 조회 promise(“1234”)
.then (function(학생_정보) { // then 으로 콜백 넣어줌.
let ~ (해라)
let
* 자바스크립트는 흐르듯 실행 x -> 위에서 과정이 다끝난 다음에 실행해야하는데
먼저 작업이 실행되고 그럼 안됨. 방지하려고 promise 생성됨.
제일 간단한게 call back (다끝내고 이거 실행하겠다.) -> 이걸 편하게하려고
도입한 것. < 다끝나고 then 실행. >
- catch: axios 실행하다가 에러 생겼을 때 얘가 실행. (react native)
- ES7버전 Async/Await 기능 추가 : 프로미스로 작성한 코드들을 한층 간결하고 직관적이게 실행, 비동기작업을 할 함수 앞에 async 붙이고 그안에 비동기 작업을 동기작업처럼 쓰면 됨.
ex_ async function 고3시_수학교사_찾기_promise(학생_학번){
let 학생정보 = awit 학생정보_조회_promise(학생_학번);
let ... }
4. React native
Axios : node.js와 브라우저를 위한 http통신 javascript 라이브러리. 모든 브라우저 지원
장점> 1. IOS, android 동시에 개발하기 쉽다.
2. 간편한 문법
3. live reload (코드가 변경되면 자동 새로고침),
hot reload(코드가 변경되면 그부분만 렌더링) 지원
4. 기능 추가, 디자인이 바뀌어도 심사 x, 앱 실행 시 언제나 최신
javascript를 다운로드하고 실행. 언제나 최신상태의 앱 경험 가능.
단점> 비즈니스 로직이 복잡하면 느려짐.
* react 자료 다루는 방식
- flux 구조: ( Action – Dispatcher – Store - View)
> MVC와 다르게 단방향으로 데이터가 흐름.
- View: React 컴포넌트
- Action: View에서 사용자가 취한 액션
- Dispatcher: 데이터가 흐르는 중앙 허브
- Store: View에 보여질 데이터를 모아놓은 저장소
>> View에서 어떤 Action 발생 시 Dispatcher는 해당 Action을 처리하기 위한 적절한 store를 찾아서 전달. Store는 dispatcher에서 들어온 요청을 처리 후 데이터 변화 시 해당 view 재랜더링.
∎ 가상 DOM (Document object model) 개념 이용
- html의 태그를 객체(Object)로써 다루자는게 DOM
∎ react component는 lifecycle이 있음.
- (특히 우리프로그램) 아래 순서대로 실행.
➀ constructor():맨 처음 생성되었을때 실행. 보통 초기화 담당.
state 직접 수정은 여기서만 가능. 이 외에는 setState()라는 메서드 사용해야함
➁ render(): 화면에 그려줄때 사용되는 함수.
➂ componentDidMount(): 내용물 다 채워지고 화면에 표시(mount)되고 난 뒤에
실행되는 함수. 최초 통신 부분이 보통 여기서 실행됨.
* props : 컴포넌트의 mounting, updating 프로세스 시점에 값이 할당될 뿐 컴포넌트 내부에서 값 변경 x, (자식이 부모한테 props로 받아왔을 때 직접 props 수정 못함.)
* state: 상황에 따라 변경되어야 하는 값들은 state 이용. ( 고유한 것이므로 자식컴포넌트가 수정할 수 있는 것. )
* react 컴포넌트: 개념적으로 props를 input으로 하고 UI가 어떻게 보여야 하는지 정의하는 React element를 output으로 하는 함수
∎ 자바스크립트 사용.
npm : 자바스크립트를 위한 패키지 매니저 ( node.js 설치시 npm 사용 가능)
* 자바스크립트 1) 자료형 3개 (단점: 비교를 해야하는데 숫자 1,2,3 string 1,2,3 다름. 이 비교가 제대로 되지 않음.) - var: 변수 재선언이 가능 => let, const 등장. (차이: const는 재할당이 안됨) 2) == : ex) 123 == “123” 결과는 true / 자바스크립트가 알아서 자료형 바꿔줌. === : ex) 자료형까지 비교. |
자료형. 자바스크립트는 인터프리터가 돌아가면서 알아서 처리, 개발자들이 불편.