전체 글
-
BackEnd 면접 질문 복기 (java, cs, DB 등)면접질문 2024. 6. 10. 11:00
아래는 java backend 신입 지원자로서 면접에서 받은 질문 기억나는 일부를 복기하였다. (임의로 분류) DBdb에 대해 아는것테이블 설계는 어떤식으로 했는지db create 로 한 이유는DB 인덱싱을 하는 이유는? 왜 하는지 어떤점이 문제가 될 수 있는지 본인은 어떤식으로 했는지어디에 인덱스를 사용했는지 아이디에만 사용했을때 문제가 없는지DB연결시 커넥션 풀을 사용하는데 왜 DB 연결할때만 사용할까PK, FK 차이와 어떤거로 왜 사용했는지네트워크내 아이피, 라우터, 네이버 아이피가 있다고 했을때 네이버는 내 아이피를 알 수 있는가?CS가비지 컬렉션이란? 동작원리는? 어떤 기준에서 사용하지 않는 것으로 판별?시간, 자원, 메모리, 렘의 관점에서 스레드 풀을 썼을때 무슨 측면에서 장점?스레드풀 관리에..
-
[면접질문 대비] cs지식 예상 질문 & 답변면접질문 2024. 6. 5. 10:28
질문: 객체 지향 프로그래밍 (OOP)란 무엇인가요?답변: 객체 지향 프로그래밍(OOP)은 프로그램을 객체들로 나누어 설계하는 프로그래밍 패러다임입니다. 객체는 데이터와 데이터를 조작하는 메서드를 포함하며, 클래스는 이러한 객체의 설계를 정의합니다. 주요 개념에는 캡슐화, 상속, 다형성, 추상화가 있습니다. OOP는 코드의 재사용성을 높이고, 유지보수를 쉽게 만들어 줍니다.질문: 데이터 구조란 무엇인가요?답변: 데이터 구조는 데이터를 조직하고 관리하는 방식입니다. 효율적인 데이터 구조는 데이터의 저장, 검색, 수정, 삭제 등을 효과적으로 수행할 수 있게 합니다. 일반적인 데이터 구조에는 배열, 연결 리스트, 스택, 큐, 트리, 그래프, 해시 테이블 등이 있습니다.질문: 스택과 큐의 차이점은 무엇인가요?답..
-
[Docker] docker를 사용하여 SpringBoot 배포 & 오류 과정Docker 2024. 5. 28. 17:46
도커는 컨테이너 기반 가상화 기술을 이용하여 애플리케이션을 개발, 배포, 운영하기 위한 오픈 소스 플랫폼이다.도커는 애플리케이션의 배포와 관리를 간소화하며 일관성 있는 환경을 유지할 수 있다. 개발 생산성과 운영 효율성 면에서 장점이 있다고 생각하여 도커를 채택하였다. 사전 준비.1. 도커 공식 사이트에서 도커 다운 (https://docs.docker.com/desktop/install/mac-install/)2. rosetta 설치 (도커 컨테이너 내에서 다른 아키텍처의 바이너리를 실행할 수 있도록 지원하는 도구)2-1. $ softwareupdate --install-rosetta Docker 클라이언트, 도커 호스트, 도커 레지스트리 간 흐름 1. [Client → Docker Host] 클라..
-
[Git] ! [rejected] main -> main (non-fast-forward) 에러 원인 및 해결방법git 2024. 5. 22. 17:47
상황로컬 - 원격저장소 연결을 한 후 push 가 정상 동작했었으나, github원격 저장소에서 readme 파일 수정 후 문제 발생. 원인로컬 브랜치와 원격 브랜치가 서로 다른 커밋을 가지고 있기 때문에 발생.이번 경우 원격 저장소에서 커밋한 내용을 그대로 가져온 상태에서 새롭게 커밋을 하면 되는 상황이다. 해결 방법1. 원격 저장소의 변경사항을 가져오기git pull origin main 1-1. merge commit 메시지 입력창 나옴Merge branch 'main' of github.com:HYEONGCHANCHO/MapleApIProject # Please enter a commit message to explain why this merge is necessary, # especially ..
-
[Java] 면접 대비 개념 정리java 2024. 5. 22. 17:20
1. 객체란 무엇인가? - 객체는 객체지향 프로그래밍의 핵심 개념 중 하나이다.- 객체는 실세계의 개체이다.- 객체는 상태(필드)와 동작(메서드)을 가진다.- 객체는 클래스의 인스턴스를 나타낸다.- 객체는 메모리에서 공간을 차지한다.- 객체는 다른 객체와 소통할 수 있다. 2. 클래스란 무엇인가? - 클래스는 객체지향 프로그래밍의 핵심 개념 중 하나이다.- 클래스는 객체를 생성하기 위한 템플릿 또는 청사진이다.- 클래스는 인스턴스화하기 전까지는 메모리의 힙 영역을 소모하지 않는다.- 클래스는 여러 번 인스턴스화할 수 있다.- 하나의 클래스는 하나의 작업만 한다.- 객체를 만드는 과정을 인스턴스화환다고 하며 new 키워드로 수행할 수 있다.- 클래스가 따라야 하는 중요한 원칙 중 하나는 단일 책임 원칙이다..
-
Jmeter 성능테스트를 통한 Thread pool 및 webclient의 동기적처리 사용 여부 결정spring 2024. 2. 16. 16:07
서론 테스트 설계전 오류 발생과 해결 과정 서비스 흐름 1. 클라이언트로부터 캐릭터 닉네임, 날짜 데이터를 입력 받는다. 2. 컨트롤러에서 서비스 클래스의 메서드를 실행시킨다. 3. 서비스 클래스의 메서드에서 maplestory openapi 호출을 하여 닉네임을 입력하고 고유 키를 전달 받는다. 고려한 사항. 1. 서비스 코드에는 RateLimiter 설정이 되어있고, 분당 300건의 호출 제한을 가진다. - 이유: maplestory openapi의 초당 호출 제한이 5건/초 이지만 메서드에서 필터를 통해 모든 호출을 바로 보내지 않기 때문에 적정 수준으로 설정. 2. 서비스 코드에서 webclient를 사용하여 비동기 방식으로 사용한다. - 이유: 먼저 RestTemplate을 사용하였으나 spri..
-
JMeter를 사용한 API호출 부하 테스트 에러 수정 -2spring 2024. 2. 8. 12:07
도입 OpenApI 를 사용하는데 있어서 5건/초 , 1,000건/일 제한이 문제가 되었다. (개발단계 제한) Jmeter를 통해 부하테스트를 하는 도중 쓰레드 수를 늘리거나 루프 카운트를 늘릴 경우 오류가 생겼다. 이를 위해 RateLimiter를 사용해 보았지만 이는 단일 쓰레드에 적용되는 방식이기 때문에 효과를 보지 못하였다. 이를 위해 쓰레드 풀 적용과 CompletableFuture를 사용하였다. 개념 우선 자바에서는 스레드를 운영체제의 자원으로 사용한다. 따라서 스레드가 계속해서 생성된다면 운영 체제의 자원이 빨리 소진되게 된다. 즉, 동시 접속자가 많아질 경우 스레드가 무한히 생성되며 서버가 다운될 수 있다는 것이다. 바로 이러한 문제를 방지하기 위해서 사용 스레드의 개수를 관리하는 방법이 ..
-
JMeter를 사용한 API호출 부하 테스트 에러 수정 -1spring 2024. 2. 5. 17:46
도입 OpenAPI 호출을 이용한 프로젝트를 만들며 서버 부하 테스트를 적용해 보고자 하였다. 서버 부하 테스트를 위한 프로그램으로 JMeter를 사용하기로 하였다. 서버 부하 테스트 실행 이유 내가 생각한 서버 부하 테스트를 하는 이유는 다음과 같다. 개발단계에서 고려해야 할 요인에는 여러가지가 있는데, 그 중에서 실제 배포 환경에 대한 고민이 필요하다 느꼈다. 혼자서 개발할 때는 호출 건수도 적고 한정적이기 때문에 대부분 안정적인 결과가 나온다. 하지만 실제 배포를 하게 된다면 예측할 수 없었던 수많은 호출과 에러가 생기는 것이 당연하다. 서버 부하 테스트는 실제 배포 환경에서 일어날 여러 변수들을 미리 겪어보고 성능을 최적화 하기 위해 실행하게 되었다. 설치 및 실행 mac 사용 환경에서 HomeB..