본문 바로가기

Tech Interview16

CS w/Backend 세미나 최근 알고리즘과 자바 언어를 위주로 공부하고 있지만, 깊게 들어갈수록 CS의 중요성을 깨닫고 있다. 그래서 kocw 강의 중 컴퓨터구조, 네트워크, 운영체제를 복기하며 정리하고 있다. 해당 글은 세미나를 참여하며 좋다고 느낀 지식을 기억하고자 개인적으로 정리한 것이다.1. 서버 아키텍처와 성능 개념 정리대규모 트래픽을 처리할 수 있는 서버 아키텍처를 설계하는 데에는 여러 개념과 성능 지표를 이해하는 것이 중요합니다.서버가 초당 처리할 수 있는 트랜잭션 수(TPS), 부하 처리 방식, 그리고 확장성을 고려해 서버의 성능을 최대화하는 방법에 대해 알아보겠습니다.2. 트래픽과 TPS (Transaction Per Second)- TPS (Transaction Per Second): 서버가 초당 처리할 수 있는.. 2024. 11. 5.
Data_Structure_Algorithm Big-O, Big-Theta, Big-Omega는 알고리즘의 시간 복잡도를 분석할 때 사용하는 점근 표기법입니다. 이들은 입력 크기 ( n )이 커질 때 알고리즘의 성능이 어떻게 변화하는지를 나타내기 위해 사용됩니다.1. Big-OBig-O는 알고리즘의 최악의 경우 성능을 나타내는 표기법으로, 주어진 함수 f(n)이 특정 함수 g(n) 보다 느리지 않다는 점근적 상한(upper bound)을 나타냅니다. 즉, Big-O 표기법은 알고리즘이 최악의 경우에 얼마나 느려질 수 있는지를 설명합니다. 예시: f(n) = 3n + 2 라면 Big-O는 O(n)으로 나타낼 수 있습니다. 2. Big-Theta Big-Theta는 알고리즘의 평균적인 성능을 나타내며 상한과 하한이 일치하는 경우를 표현합니다. f(n).. 2024. 11. 5.
5. 질문 (웹 브라우저에 URL 전체 동작과정) [가정] PC : window NAT : 공유기 브라우저에 URL 입력하면 -> 운영체제에 따라 다름(window라고 가정) -> 만약 www.naver.com 검색을 한다면, naver.com의 IP를 알아야 함 -> : 이때 DNS에 질의를 하게 되면 IP를 획득하지만, 항상 DNS에 물어보지는 않음. (1) 컴퓨터가 가지고 있는 hosts 파일을 확인 (2) 그전에 DNS 질의했다면, 컴퓨터가 이 응답을 캐싱합니다. 그래서 캐시 결과를 보고 DNS에게 물어볼 필요가 없다면 질의X (3) 위에도 없다면 DNS에 질의를 하는데, 여기서 다시 나뉨. [ 1 ] 만약 공유기를 사용하고, 컴퓨터의 DNS 설정이 공유기로 되어있다면 공유기가 DNS에 질의 후 응답을 받아 컴퓨터에 넘길 수 있음. [ 2 ] 만.. 2024. 3. 9.
4. 질문 (Middleware) 미들웨어란, 운영 체제와 해당 운영 체제에서 실행되는 응용 프로그램 사이에 존재하며 분산 컴퓨팅 환경에서 컴퓨터와 컴퓨터간의 연결을 안전하고 용이하게 해주는 전반적 관리를 도와주는 소프트웨어입니다. 응용소프트웨어가 운영체제로부터 제공받은 서비스 이외에 추가적으로 이용할 수 있는 서비스를 제공하는 컴퓨터 소프트웨어입니다. 다시 말해, 서로 다른 기종의 하드웨어나 프로토콜, 통신환경 등을 연결하여, 응용프로그램과 그 프로그램이 운영되는 환경 간에 원만한 통신이 이루어질 수 있게 하는 소프트웨어를 말하며, 특정 정보 시스템 환경에서 작동할 수 있도록 지원해주는 역할을 한다고 이해할 수 있습니다. OS는 기본적인 기능 밖에 없기 때문에, 단독으로 할 수 있는 일은 많지 않습니다. 미들웨어가 있으면 복잡한 처리가.. 2023. 12. 6.
3. 질문 (Proxy & SpringBoot) Proxy : 일종의 대리자. 개발할 때 특정한 Interface를 노출시키지 않고, 외부로부터 감추고 싶을 때 사용하는 것이 바로 Proxy 패턴입니다. 하지만 Spring에서 지원하는 Proxy와 디자인 패턴에서의 Proxy 패턴은 다릅니다. 일반적으로 Proxy는 실제 Target의 기능을 대신 수행하면서, 기능을 확장하거나 추가하는 실제 객체를 의미한다. Proxy 패턴은 Target에 대한 기능을 확장하지는 않고, Client가 Target에 접근하는 방식을 변경해준다. Proxy를 사용하는 이유는 OCP, SRP를 지키키 위해서 입니다. 프록시 패턴을 통해 프록시 코드를 구현할 수 있다. 쉽게 말해 1) 클라이언트가 타깃에 접근하는 방법을 제어할 때 예로 JPA의 지연로딩 2) 타깃에 부가적인.. 2023. 11. 30.
1. JPA 소개 & 영속성 관리 객체 모델과 관계형 데이터베이스 모델은 지향하는 패러다임이 서로 다르다. 문제는 이 차이를 극복하려고 개발자가 너무 많은 시간과 코드를 소비한다는 점이다. 자바 진영에서는 오랜 기간 이 문제에 대한 숙제를 안고 있었고, 패러다임의 불일치 문제를 해결하기 위해 많은 노력을 기울였다. 그 결과물이 바로 JPA이며, 패러다임의 불일치 문제를 해결재주고 정교한 객체 모델링을 유지하게 도와준다. JPA(Java Persistence API) 자바 진영의 ORM 기술에 대한 API 표준 명세다. 애플리케이션과 JDBC 사이에서 동작한다. JDBC(Java Database Connectivity) Java 기반 애플리케이션의 데이터를 데이터베이스에 저장 및 업데이트하거나, 데이터베이스에 저장된 데이터를 Java에서 .. 2023. 11. 30.
2. 질문 캐시 : 데이터나 값을 미리 복사해 놓는 임시 장소입니다. 캐시에 데이터를 미리 복사해 놓으면, 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있습니다. 캐시에 모든 데이터를 다 담아둘 수 없기 때문에, 캐시의 크기가 제한되고 그에 따라 캐시가 대체되어야 합니다. 캐시 교체 알고리즘에 따라 어떤 파일을 버리고 새로운 캐시를 저장할지 결정하는 것이 캐시 교체 알고리즘입니다. 종류 1. FIFO - 캐시 내에 오래 있었던 페이지 교체, 자주 사용되는 페이지가 교체될 우려가 있음. 2. LFU - 사용 횟수가 가장 적은 페이지 교체, 최근 적재된 페이지가 교체될 우려가 있음. 3. LRU - 가장 오랜동안 사용되지 않은 페이지 교체, time stamping에 의한 오버헤드 존재 * 페이지 : .. 2023. 11. 27.
고용노동부에서 실시한 공모전 프로젝트 8주차 회고록 https://github.com/Contest-of-YDJ (23.06.20 ~ 23.06.27) B.E. 모든 페이지 한글 -> 영어로 수정 및 위험성 인증 안전 사업장 사용 가이드 라인 기능 추가 Community 카테고리 댓글 기능 추가 산재 지원 병원 카테고리 기능 추가 -> xml 문서 파싱을 위해 Jaxb 사용 F.E. 산재 지원 병원을 위해 Kakao Map API 사용 -> 위치에 대한 마커 및 세부 정보 표시 첫 메인 페이지 슬라이드 및 UI 수정 여러 데이터 페이징 처리 -> 이제 마무리 단계에 들어서 백엔드 최소한의 기능 구현은 마쳤다. 프론트에서 현재 jwt, ui 수정 작업을 진행중이고, 백엔드 팀원과 함께 공모전을 위한 보고서 작성 및 시스템 아키텍처 도안, Github Re.. 2023. 6. 29.
고용노동부에서 실시한 공모전 프로젝트 7주차 회고록 23.05.29 ~ 23.06.12 B.E. 커뮤니티 -> 첫화면 전체 데이터 불러오고 안에 카테고리 만들어서 해당 데이터만 받아올수있게 표형식으로 보여주기 산재 예방 api → 번역쪽 구현 추가 code review 중 85% 정도 refactoring 완료했고, 나머지는 github project의 Issue로 등록하여 잊지않고 할 수 있게끔 계획. 필자가 맡았던 위험성 안전 인증 회사 기능 구현은 마쳤고, 바로 산재 예방 지원 병원 기능을 맡아 구현할 예정. 팀원분은 산재 메뉴얼 번역쪽 하고 있고, 문제가 있는 것 같아 Google meeting로 협업하여 나아갈 예정 F.E. 커뮤니티 기능 글 작성시 데이터 전송 수정 커뮤니티 글은 모달창으로 보이게끔 수정 글작성 쪽 관련 마무리하고 → time.. 2023. 6. 14.
고용노동부에서 실시한 공모전 프로젝트 6주차 회고록 23.05.15 B.E. 커뮤니티 기능 작업 시작 ~ 5.22 마무리 성공 이번주부터 현직 개발자 code review 받기로 해서 해당 부분 refactoring하고 모르는거 물어보기. 공공데이터 기능 위험 안정성 인정 사업장 Api 기능 구현 시작 -> me 산재 예방 메뉴얼 Api 기능 구현 시작 F.E. 메인 페이지 슬라이더 수정 완료 회원가입하면 로그인 화면으로 갈 수 있도록 로그아웃 눌렀을때 홈화면으로 가기 슬라이드 구분 배율 ~~님 안녕하세요 jwt 형식 똑같이 보내주도록 → 로컬스토리지나 세션에 저장해서 모든 api 들어갈 때 jwt 토큰만 5월1일 사진에 있는것 그대로 똑같이 보내주면됨 커뮤니티, 건의사항 쪽 ui 작업 간단하게 해놓기 커뮤니티 게시글 더미 데이터 넣어서 꾸며보기 커뮤니티.. 2023. 6. 14.
고용노동부에서 실시한 공모전 프로젝트 5주차 회고록 5주차 feedback 백 : jwt 구현, 로그인 구현 완료 프 : 로그인, 메인 페이지 해당 부분 완성 로그인하면 메인 페이지로 가게, 로그인쪽이랑 메인페이지 css 꾸미기! 로그아웃하면 메인페이지로 이동하도록 로그인하면 아래 처럼 jwtToken이 프론트로 날라가는데 이걸 저번 우리 프로젝트 했던거처럼 로컬 스토리지에 저장해놨다가, 다른 api 호출할때 토큰값을 같이 보내줘야해 여기 공부 프론트쪽에 스웨거 사용 법 간단히 설명 jwt 토큰 관련 설명 백엔드쪽에 회원가입 및 로그인에 User 정보 저장 관련 Bug fix → DB 칼럼 네이밍과 프론트쪽 post 데이터 네이밍 불일치 때문에 일어난 오류 회의 프론트 1) 슬라이드 쪽 수정, 로그아웃 버튼만들고 action → home으로 가도록 2) .. 2023. 5. 8.
스프링 부트 3.X 버전 Swagger 도입시 생긴 오류 프로젝트 진행시 Api 테스트를 위해 Postman을 자주 사용했었는데, 지난 프로젝트에서 Swagger를 사용하면서 굉장히 편리하다는 것을 깨달았다. 그래서 이번 프로젝트를 진행하면서 Swagger를 도입하려고 했으나!! 여러 문제점 때문에 2일 동안 골머리를 앓았다. 첫번째 저번과 똑같이 쓰면 되겠지, 하는 안일한 생각에 아래를 implementation 했는데 결과는...? 검색해보니 SpringBoot 3버전 이상에서는 2.6.1 버전의 swagger를 사용할 수 없었다. springfox swagger가 SpringBoot 3버전을 지원하지 않기 때문이다. 그래서 springdoc swagger를 사용해야 했고, 장점으로 별도의 configuration 설정 없이 사용이 가능했다. 아래처럼 추가.. 2023. 4. 21.
고용노동부에서 실시한 공모전 프로젝트 3주차 회고록 2주차 정리 1) 백엔드, 프론트 연동 완료 2) 각자 작업 세팅 및 브랜치 전략과 프로젝트 구조 논의 완료 3) Github Project를 사용하여 이슈와 태스크 관리를 사용하기로 논의 완료 깃 커밋 컨벤션 규칙은 아래로 맞추어 진행하기로 하였다. feat : 새로운 기능 추가 fix : 버그 수정 docs : 문서의 수정 style : (코드의 수정 없이) 스타일(style)만 변경(들여쓰기 같은 포맷이나 세미콜론을 빼먹은 경우) refactor : 코드를 리펙토링 test : Test 관련한 코드의 추가, 수정 chore : (코드의 수정 없이) 설정을 변경 추가로 주간회의인 다음주 목요일 4.20 일까지 구현을 목표로 하고, 4.17에 중간회의 및 이슈 발생에 대한 논의를 얘기하기로 하였다. I.. 2023. 4. 13.
고용노동부에서 실시한 공모전 프로젝트 2주차 회고록 정리 2주차는 간단한 피그마 사용으로 UI 결정과 기능을 얘기하였다. 전체적인 프로젝트 일정을 잡았고, 앞으로 커밋 컨벤션 정의와 Pr에 대한 논의를 나누고 태스크를 나눈 후 개발을 시작할 예정이다. 메인 UI는 아래 링크에 있는 것을 토대로 작성할 예정 https://www.gdweb.co.kr/sub/view.asp?displayrow=60&Txt_key=all&Txt_word=&Txt_agnumber=&Txt_fgbn=5&Txt_bcode1=&Txt_gbflag=&Txt_bcode2=&Txt_bcode3=&Txt_bcode4=&Txt_bcode5=&Page=1&str_no=19038 http://www.gdweb.co.kr www.gdweb.co.kr 아래는 피그마 URL https://www.fi.. 2023. 4. 13.
고용노동부에서 실시한 공모전 프로젝트 1주차 회고록 Safety of Business for Foreigner 주제 : 외국인을 위한 산재 예방 웹사이트 회의 일정 : 월, 목 밤 10시 해당 페이지마다 번역버튼 생성 → 해당 글을 각자 나라 사람이 볼 수 있게! 사용할 임시 카테고리!! 산업재해 발생 사실 은폐 사업장 관련 정보 데이터 → https://www.data.go.kr/data/15090005/fileData.do#/API 목록/getuddi%3Ae977497a-08bc-4713-bba3-b33ac189a172, https://www.data.go.kr/data/15090007/fileData.do#/API 목록/getuddi%3Ab7254d09-5624-4207-a4c4-f53964654568 산재병원 의료 현황 데이터 → https://w.. 2023. 4. 4.
1. 질문 1) 멀티 프로세스로 처리 가능한 걸 굳이 멀티 스레드로 하는 이유? : 프로세스를 생성하여 자원을 할당하는 시스템 콜이 감소함으로써 자원의 효율적 관리가 가능, 프로세스 간의 통신보다 스레드 간의 통신 비용이 적어 작업들 간 부담이 감소한다. 대신, 멀티 스레드를 사용할 때는 공유 자원으로 인한 문제 해결을 위해 동기화에 신경써야한다. 교착상태는 프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태를 못한다.(시스템적으로 한정된 자원을 여러 곳에서 사용하려고 할 때 발생하는 문제이다.) - 상호 배제 : 프로세스들이 필요로 하는 자원에 대해 배타적 통제권을 요구한다. - 점유대기 : 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다. - 비선점 : 프로세스가 어떤 자원의 사용을 끝날 때.. 2022. 7. 20.