본문 바로가기
반응형

기술면접8

비동기와 멀티스레드의 차이 Dart나 JavaScript 같은 언어는 async, await라는 키워드를 가지고 있다. 처음 이 async라는것을 보고 멀티스레드와 동일한 개념인 줄 알았다. 계속 공부해보니 뭔가 잘못됐다는 느낌이 들어 이번기회에 제대로 공부하고 이해하였다. 아주 간단한 비유 간단히 말하면 aysnc는 task(일)의 순서에 관한 일이고 멀티스레드는 worker(작업자) 라고 생각하면 편하다! 먼저 알아야 할 사실 비동기 작업이라 하면 항상 나오는 작업들이 있다. 네트워크 요청, 파일시스템 reading, DB조회등 이런놈들은 CPU 자원 외에 다른 자원을 사용한다. 이 사실을 모르고 이해하려 하니 계속해서 이해를 하지 못했다. 아래는 GPT답변.. cpu자원말고 다른 자원들이 있었던거야? 네, CPU 자원 이외에.. 2022. 8. 19.
싱글톤 패턴이란 싱글톤은 태양, 달 이라고 생각하면 편하다. 이 우주에서 태양과 달은 하나밖에 없고 지구 어디서든 볼 수 있다. 즉 클래스를 만들었는데 그 클래스는 딱 하나만 생성되고 어디서든지 접근 가능하게 만들었다고 하자 이렇게 클래스를 만드는 기법을 싱글톤 패턴이라고 한다. #include class Singleton{ private: static Singleton* instance; Singleton(){}; public: static Singleton* getInstance(){ if(instance == nullptr){ instance = new Singleton(); } return instance; } }; //static 멤버 변수는 모든 객체가 공유해야 하므로 프로그램 전체 영역에서 메모리 유지가 되.. 2021. 4. 17.
파이썬 GIL 이란? 모 해외 시스템 반도체 회사에서 GIL이 뭔지 물어봤다길래 정리해본다. GIL(Global Interpreter Lock) 일단 이놈은 파이썬 버전 뮤텍스라고 생각하면 편하다. 허나 c/c++에서 알고있는 그 뮤텍스와 큰 차이가 있다. 파이썬의 멀티스레딩도 c/c++과 큰 차이가 있고. 결론부터 말하면 파이썬에서 스레드로 병렬 프로그래밍을 짜면 각각의 스레드가 c/c++처럼 한번에 여러작업을 수행하지 않는다. 이놈의 GIL 때문이다. 파이썬은 하나의 프로세스 안에 모든 자원을 Global하게 Lock 한다. 스레드는 프로세스 안에 자원을 공유하는데 모든 자원을 Global하게 Lock해버리면 한번에 하나의 스레드만 작업을 하게 된다. 아니 그럼 멀티스레딩이 의미 없잖아? 거의 맞는말이지만 I/O 작업을 .. 2021. 4. 17.
[기술면접] CS기술면접 기초 질문들 모음 CRUD란? 컴퓨터에서 데이터의 기본 처리인create, read, update, delete를 의미한다 메모리의 구조에 대해서 설명하시오 www.tcpschool.com/c/c_memory_structure 코드(code) 영역 메모리의 코드(code) 영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트(code) 영역이라고도 함 데이터(data) 영역 메모리의 데이터(data) 영역은 프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역. 데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸 힙(heap) 영역 사용자에 의해 메모리가 할당되고 해제되는 영역. malloc 하면 여기에 메모리가 쌓인다. 힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당 스택.. 2021. 4. 17.
[기술면접] 프로세스와 스레드, 세마포어와 뮤텍스 차이 프로세스 컴퓨터내에서 연속적으로 실행되고 있는 컴퓨터 프로그램 의미 운영체제로부터 시스템 자원을 할당받는다 스레드 프로세스내에서 실행되는 여러 흐름들의 단위 영어 의미로 실. 그냥 간단히 비유하면 실 하나가 갑자기 여러갈래로 나뉘어짐 나뉘어진 실마다 일을 따로 한다고 생각하면 됨 프로세스는 운영체제에서 나오는 실가닥이라고 생각하고 스레드는 프로세스에서 나오는 실가닥이라 생각하면 된다. 세마포어 프로세스간 공유된 자원의 동시접근을 막아주는 기술 뮤텍스 스레드간 공유된 자원의 동시접근을 막아주는 기술 크리티컬 섹션 공유자원을 접근하는 코드영역 멀티프로세스보다 멀티스레드를 쓰는 이유? 이 말의 뜻은 여러 프로그램을 만들어 여러작업을 수행하는것보다 하나의 프로그램에서 여러개의 스레드를 생성시켜 작업하는게 더 좋.. 2021. 4. 17.
[기술면접] MVC 패턴이란 웹에서 사용하는 디자인 패턴. 간단히 말하자면 위 그림가 같은 형태로 작업을 하는것을 뜻한다. Model, View, Controller로 3개의 영역으로 나뉜다. 각 영역은 서로 독립되어 작업된다. Model 모델이란 어떠한 동작을 수행하는 코드를 말한다. 라고 위키에 적혀있는데... 이렇게 말하면 이해하기 어렵다. 간단히 말하면 주로 DB를 가르키거나 백엔드 작업을 말한다. View 브라우저 상에서 사용자에게 보여지는 페이지를 의미한다. View는 별도의 데이터를 보관하지 않는다. 즉 Model에 대한 정보가 없어야 한다. Controller Model 에다가 일을 시키는 작업. User는 뷰를 통해 컨트롤러를 실행시켜 Model에다가 Query와 같은 작업을 요청한다. View와 Model의 중간다.. 2021. 4. 14.
[기술면접] 기술면접 준비하기 미국 실리콘밸리 유튜버의 기술면접 준비하는법을 보고 간략히 정리해보았다. 코딩 면접은 절대 어려운 문제가 나오지 않는다. 어려운 문제를 푼다면 그건 답을 외웠다고 생각한다고 한다. 오히려 쉬운 문제. 문자열 뒤집기, 스택, 큐 같은 자료구조 유형, 해시테이블 만들어보기 같은게 나온다. 모른다고 절대 대답하지 말자. 막히면 면접관이 알아서 힌트 주니 걱정말자 절대 무언가에 대해 잘한다고 얘기하지 말고 겸손할 것 나 잘낫다고 자랑하는듯이 면접보면 자기 포장으로 사기치는 사기꾼으로 보인다 한다. 자소서에 대한 내용에 거짓이 없어야 한다 자소서 기반으로 이 사람이 정말 이 프로젝트를 했는가 안했는가에 대한 사실은 금방 뽀록난다고함 고로 진짜로 한 내용만 적어라 하긴 나도 생각해보니 코딩 면접때 어려운 문제가 나.. 2021. 4. 12.
[기술면접] 해시테이블 파이썬 구현 해시테이블이란? 딕셔너리 자료형을 생각하면 된다. 딕셔너리 자료형은 key값을 통해 value값을 O(1)속도로 찾는다. 여기서 key값을 특정한 hash값으로 변경해준 뒤 이 hash값으로 value를 찾는데 이러한 hash값을 모아논 자료형이 해시테이블이다 즉 해시테이블은 세가지만 기억하자 key hashkey (그림에서 buckets) value 해시테이블의 과정은 이렇다. 1. key값을 기준으로 hashkey를 계산한다. 2. hashkey를 기준으로 value를 찾는다. 아래는 파이썬으로 기본적인 hashtable을 구현해본 것이다. class hashTable: def __init__(self, tableSize): self.tableSize = tableSize self.hashTable .. 2021. 4. 12.
반응형