Coding Interview

@coding-interview

Coding Interview

Public team

Joined on Jun 9, 2022

  • 2-3 Tree 이전 글에서 다뤘던 Binary Tree 와 Binary Search Tree 는 자식 노드를 최대 2개 밖에 갖지 못한다. 하지만 자식 노드를 3개 갖도록 한 Tree 가 2-3 tree 라고 부른다. 2-3 tree의 특징은 아래와 같다. 왜 2-3 tree 라고 부르냐면, degree (child node의 수)가 2 또는 3이기 때문이다. 즉, 최소 child 의 개수는 2개라는 의미이다. 2-3 Tree는 다음과 같은 특징을 갖는다.하나의 노드는 최대 2개의 key (3개의 자식 노드)를 갖는다. 2-3 tree는 self-balancing tree 다. 모든 leaf node 는 같은 레벨을 갖는다. 모든 internal node는 항상 2개 이상의 자식 노드를 갖고 있어야 한다. 그렇지 않으면 자식 노드와 merge 가 되어 버린다. 2-4 이유 때문에 balance 가 깨지면 부모로부터 key 를 빌려오는 행위를 한다. Insert 삽입은 다음과 같은 과정을 거친다.기본적으로 leaf node 까지 간 후 삽입하면서 rebalancing 을 진행한다. 삽입을 할 때는 leaf node에서 부모로 타고 올라가는 방식을 취하는데, 이 방법을 상향식 이라고 한다.
     Like  Bookmark
  • Resume 기반 Core Skills Q. 이력서를 보아하니 Core Skills에 Full stack web development, DevOps engineering, ML engineering 이라고 써놓으셨네요? A. 넵, 제가 회사에 있으면서 진행했던 프로젝트들이나 업무들이 관련된 업무들이어서 그렇게 작성했습니다. 예를 들어, 풀스택 개발 같은 경우에는 GUI 와 CLI 를 포함한 프론트엔드를 개발하고, REST API 기반의 백엔드를 개발했습니다. 그리고 팀내에서 사용하는 기본적인 github 와 jenkins 를 셋업하고 정책을 정하여 개발 및 배포 자동화를 셋업했습니다. 마지막으로 데이터를 수집하고, 저장하고, 이를 머신러닝을 활용하여 솔루션을 제안하는 프로젝트들을 진행했습니다. Language Q. 주로 사용하는 언어는 무엇인가요? A. 백엔드를 개발할 때는 Python을 사용하고, 프론트 엔드를 개발할 때는 Vue.js 와 Electron 을 사용했습니다.
     Like  Bookmark
  • 가상 자산 거래소 거래 수수료가 주 수입원 한국에 있는 가상 거래소는 기본적으로 파생상품을 거래하지 못한다 파생 상품들을 개발 못하는 이유는 정책적인 문제 때문이겠지? (ex. Binance 등은 다양한 파생상품들을 갖고 있음). 애초에 선물거래도 불가능한게 제도때문에 그런듯. 만약에 선물거래 까지 가능하다면 거래 수수료가 훨씬 많아질 것으로 기대 코인원이 NFT 판매를 하지 않는 이유는, 거래량 자체가 없어서 굳이 만들 필요가 없다? 오히려 코인에만 집중한다? 코인에 대한 상장 심사가 중요한 것 같음. 많은 코인들이 Cex 에 상장하고 싶어하는데 조건이 까다로울 수 있음. 코인원의 가상자산 상장 정책 및 지침:
     Like  Bookmark
  • MSA 란? 특징과 장단점 출처: https://gruuuuu.github.io/cloud/architecture-microservice/ 특징: 클라우드와 컨테이너가 잘 어울리는 아키텍처. 각각의 작은 서비스 여러 개가 독립적이며 느슨하게 결합되어 있음. 그렇기 때문에 각각의 서비스들을 독립적으로 배포할 수 있으며, 전체 프로그램을 빌드한 뒤 재배치하지 않고 기존 서비스들을 업데이트 할 수 있음. 장점으로는 독립적인 개발 및 배포 가능 / 서비스 하나가 다운되어도 전체 서비스에 영향을 주지 않는다는 점 / 리소스의 유연한 운용 가능이 있다 단점으로는 서비스간 통신 방법이 필요하고, 복잡하고 / 서비스끼리의 테스트가 어렵다 / 또한 복잡하고 독립된 구조로 인해 통합적인 유지관리가 어려워질 수 있다 조금 더 자세한 내용(https://yeti.tistory.com/269) 각각의 서비스와 데이터를 나눠서 관리하고, 서비스 간 통신은 REST API 나 message queue 를 활용한다. 각가의 서비스들은 독립적인 devops 환경을 갖고 있고, 서비스에 대한 모니터링이 지속적으로 이뤄져야 한다. CI 는 코드를 merge 하고 빌드 및 정적 분석, 테스트, 배포 결과물까지 만드는 과정
     Like  Bookmark
  • Google 자기 소개 내가 모르는 것 내가 면접관이라면 마음가짐 문제 풀이 Coinone
     Like  Bookmark
  • 블록체인에 대한 이야기 블록체인이란 Q. 블록체인이 무엇이라고 생각하시나요? A. 블록체인은 탈중앙화된 거버넌스에 의해 운영되는 분산형 데이터베이스입니다. 기존에 중앙화된 기업에 의해서 운영되던 데이터베이스가 탈중앙화된 참여자에 의해서 운영되는 공개된 데이터베이스라는 측면에서 활용 가치가 매우 크다고 생각합니다. 왜 블록체인인가 Q. 블록체인을 좋아하는 이유는? A. 첫번째로, 블록체인이라는 기술과 얽혀있는 생태계에 매력을 느꼈습니다. 사실 이전에는 인공지능에 관심이 더 많았는데요, 인공지능과 그 생태계를 보다보니, 인공지능을 다들 갖다 쓰려고만 하고, 이 인공지능을 어떻게 하면 잘 쓰고, 인공지능을 어떻게 발전시키려고 하는지에 대한 고민은 부족해보였습니다. 그 고민은 소수의 똑똑한 수학자들이나 인공지능 전문가의 몫이었습니다. 하지만, 블록체인은 달랐습니다. 이 블록체인을 사용하는 것을 뛰어넘어서, 어떻게 하면 블록체인을 실생활에 녹여내고 가치를 높이는 것에 엔지니어 뿐만 아니라 디자이너, 기획자, 금융인들 너무나 다양한 주체들이 참여하는 것을 볼 수 있었습니다. 즉, 소수에 의해서 만들어진 나이스한 기술보다는 아직 성숙하지 않은 기술을 발전시키기 위한 다양한 참여자들의 노력이 들어가있는 기술이라는 측면에서 매력적으로 다가왔습니다.
     Like  Bookmark
  • 요구사항 블록넘버 민팅 (트랜잭션 당 / 지갑당 개수 제한 필요) 디스플레이 기능 블록넘버: 블록체인의 service provider 를 통해서 가장 최신 블록 높이를 가져와서 보여줌 민팅
     Like  Bookmark
  • 오픈씨는 NFT 를 거래할 수 있는 플랫폼이다. A 라는 사용자가 NFT를 판매하기 위해 '리스팅'하게 되면, 그 리스팅한 가격을 보고 B라는 사용자는 '구매'를 한다. 이 과정에서 B라는 구매자의 토큰은 A라는 판매자에게 입금이 되고, 수수료는 오픈씨와 창작자에게 돌아간다. 그리고 A 라는 판매자의 NFT는 구매자의 지갑으로 전송된다. 이러한 과정은 스마트 컨트랙트로 개발되어 있고, 스마트 컨트랙트 기능 중에 setApprovalForALl 이라는 함수가 사용자의 권한을 임시로 위임받아 위와 같은 거래 과정을 처리해준다. setApprovalForAll 이라는 함수는 ERC721 표준, 즉 NFT 를 위한 표준 프로토콜의 함수라고 볼 수 있다. 이 함수는 특정 주소에 권한을 주는 역할을 한다 setApprovalForAll(address to, bool approved) 이 함수 때문에 해킹 사고가 빈번하게 발생했었다. 분명 오픈씨 컨트랙트는 문제가 없다. 하지만, 스캠 링크를 클릭해서 그 사이트를 통해서 setApprovalForAll 이 포함된 트랜잭션을 수행했다고 하면 그것은 오픈씨가 아닌 해커에게 권한을 주는 것과 마찬가지이다. 이런 경우에는 해커가 사용자의 지갑의 자산을 자유롭게 빼갈 수 있다.
     Like  Bookmark
  • 크립토 지갑의 원리 니모닉이란? 니모닉은 privtate key 를 생성하는데 사용되는 단어들이다. HD Wallet 메타마스크는 HD Wallet 이다. HD wallet 이란, hierachical deteministic wallet 의 약자로, 계층적이고 결정론적인 지갑이라고 볼 수 있다. HD wallet 은 하나의 니모닉에 HD derivation 조합으로 여러 개의 지갑을 만들 수 있는 구조이다. 하나의 니모닉에서 생성된 주소이기 때문에 N 개의 지갑이 있다고 하면 N 개의 private key 를 알 필요없이 단 하나의 니모닉만 알고 있으면 모든 계좌에 대한 권한을 얻을 수 있다.
     Like  Bookmark
  • 다양한 종류의 데이터베이스를 목적에 맞게 사용하는 것이 중요하다. RDBMS vs NoSQL ACID RDBMS 는 기본적으로 관계에 기반한 데이터 베이스이다. ACID 를 지키는 것이 특징이다. 반면에, NoSQL 은 ACID 를 지키지 못한다. 예를 들어, 특정 서버에서 데이터를 write 하고 있는 동안에 다른 서버에서는 read 를 하고 있을 수 있다. 그러면 동시점에서 봤을 때, consistency 가 깨졌기 때문에 ACID 를 보장할 수 없다는 것이다. Sharding
     Like  Bookmark
  • 출처: https://medium.com/@sandeep4.verma/system-design-scalable-url-shortener-service-like-tinyurl-106f30f23a82 제약 조건 URL 은 만료되는 기한이 있나요? No. -> 데이터는 추가만 될 뿐 삭제 또는 업데이트 기능은 없음. URL 을 Customize 할 수 있나요?
     Like  Bookmark
  • # 이더스캔
     Like  Bookmark
  • # API rate limiter (Github)
     Like  Bookmark
  • # 우버, 리프트
     Like  Bookmark
  • # 트위터나 인스타그램
     Like  Bookmark
  • # Web crawler
     Like  Bookmark
  • # Dropbox, Google Drive, Google Photo
     Like  Bookmark
  • # Search Typeahead
     Like  Bookmark
  • # Quora, Reddit, HackerNews
     Like  Bookmark
  • # 페이스북과 트위터
     Like  Bookmark