본문 바로가기

뇌세포덩어리""

(190)
백엔드 개발자 질문들 (2021) 왜 지원 했는지 어떤 일을 했는지 + 프로젝트 구성도 일을 하면서 기억에 남는 프로젝트 일을 하면서 힘들었던 점 사이트 접속시 화면이 뜨지 않을 때 어떤 부분을 체크해야 하는가? 디비는 어떻게 체크하고 관리하는지 N+1 django select_related // prefatch_related ORM ORM을 쓰지 않고 일반 쿼리는 어떻게 관리하는지 현재 프로젝트의 CI//CD 구성 테스트코드를 작성하는지 커버리지는 체크 하는지 현재 작성한 프로젝트의 트래픽은? + 어느정도 견딜수 있도록 설계 했는가? 코드작성시 어떤것을 가장 우선시 하는지? 새로운 언어를 배워야 한다면 어떻게 생각하는지? 팀장으로써의 역활을 맡는다면 어떻게 생각하는지? 요즘 공부하는 것은? - 이젠 경력이 쌓여서 그런가 기본적인것은 안..
문자열 검색 알고리즘 ( Brute force search / 라빈 카프 / KMP / Boyer-Moore) 서문 https://leetcode.com/problems/implement-strstr/ 의 문제를 풀면서 의문이 들었다. 해당 문제는 이중 for문을 사용하면 timeout이 발생한다. python로 문제를 푼다면 find 함수를 사용하여 간단히 풀 수 있다. 각 언어별로 find(text, pattern)는 (문자열 text에 특정 문자열 pattern의 위치를 리턴하는 함수)가 있을텐데 pytho은 "어떤 알고리즘을 사용하길래 문자열을 빠르게 찾는걸까?"에서 시작했다. 언어별 결과를 빠르게 알고 싶다면 글의 마지막 번외를 보시면 됩니다. 문자열 검색 알고리즘에 어떤것들이 있는지, 차근차근 공부를 해보는 문서이다. 1. Brute force search 무차별 문자열 검색은 매우 기본적인 하위 문자..
파이썬 백엔드 면접 질문들2 (장고+시스템+디비 포함) 현재 프로젝트에서 진행했던것들, 시스템 구성도, 프로젝트 하면서 어려웠던거, 가장 좋아하는 프로젝트와 이유 django model에서의 select_related and prefetch_related 동작 방식 list / tuple / dict 의 차이점들 list / set / tuple의 메모리 접근 시간 복잡도 dict의 데이터 넣을때와 충돌시 시간 복잡도 정렬된 리스트에서 찾을때의 시간 / 정렬되지 않았을때의 시간, postgresql에서 explain 보는 법 explain 설명 django에서 어떨때 inner join / outer join으로 나뉘는지 testcase에서 setup / setclass의 차이 test 에서 django model 을 않쓰고 싶을때 어떻게 상속 받아야 하는지..
파이썬 백엔드 면접 질문들 이번 면접은 코딩을 하면서 계속해서 문제점을 개선해 나가는 형식이었다. 이런 면접의 경험은 처음이여서 엄청 도움이 되었으며, 신선하고, 재미있었다. 비록 탈락 했지만, 해당 회사의 서비스도, 면접관들도 너무 좋았다. 다음에 기회가 된다면 정말 다시 넣어볼 생각이다. 쨋든 크게 두가지로 진행되었으며, 알고리즘과 실제 서비스 구현 문제였다. 1. 알고리즘 문제 - n개의 방(room)이 있다 - 각 방은 키가 있어야만 들어갈 수 있다 - 해당 키는 랜덤하게 어떠한 방에 들어가 있다 - 어떤 방은 키가 있을 수도 없을 수도, 두 개 이상일 수도 있다 - 0번 방부터 시작한다. - 모든 방을 방문 했는지 여부를 true, false 리턴하라 * 입력의 형태는 어떻게 하고 싶어? * 어떤 식으로 풀어갈꺼야? * ..
프로그래머로 사는법 망쳐버린 소프트웨어 프로젝트와 무용담 - "우리가 만든 소프트웨어는 정말 좋았는데, 시장이 아직 무르익지 않았어. 너무 시대를 앞써갔어" 진실 : 소비자 요구를 제대로 파악하지 못했다 - "소프트웨어는 참 잘 만들었는데 영업,판매가 잘 안되더라고요" 진실 : 아무도 글너 소프트웨어를 원하지 않았다. - "제품은 끝내줬는데 제대로 좀 해보려는 마당에서 윗선에서 잘라버렸지" 진실 : 수익을 창출하기까지 너무 오래 걸렸다. 자신이 사랑하는 일을 하라 - 행복을 찾으세요. - 배울수 있는건 뭐든 배우세요. 언젠가, 어딘가에서, 어떤 식으로든 자기 일에도 도움이 될겁니다. - 새로운 것을 시도해 보세요. 하지만 옛것을 지키세요 - 최고의 사람과 함께 일하세요 - 조언자를 찾으세요. 자신이 존경하는 사람으로부터 배..
실리콘 벨리를 그리다 - 직원을 프로페셔널 파트너로 보지 않고 시키는 일을 잘하는 일꾼이라고 생각하는 회사는 안전 욕구를 위협하여 일을 시키려는 경향이 있다. "너 아니어도 일할 사람 많아!", "잘리고싶어?" 같은 메시지로 안전 욕구를 끊임없이 위협한다. 이런 회사에선 행복할 수 있는 사람은 없다. - 매니저는 내가 하는 일이 회사에 얼마나 중요한지, 내가 있는것이 팀에 얼마나 도움이 되는지를 구체적으로 이야기해주었다. 다른 사람과 비교하여 내가 우위에 있다는 뜻이 아니였다. 사람마다 장단점이 있고 내게도 분명 단점도 있지만, 내 장점이 팀과 회사에 어떻게 기여하고 있는지, 내가 더 많이 기여할려면 뭘 보완하면 좋을지를 정확히 피드백해주었다. - 행복한 직장인을 만드는 욕구 단계 생리 욕구 : 잘 먹고 잘 쉰다. 안전 욕구..
디자인패턴 1. 싱글톤 : 객체 하나를 통한 이벤트 - 클래식싱글톤 : 상속을 해도 오직 상위객체의 데이터/함수만 사용가능 - borg 싱글톤 : 상속을 해서 하위단의 데이터를 사용가능/함수만 상위단의 것을 사용 2. 팩토리 : 변수에 따른 객체를 리턴 - 여러개의 공통된 클래스의 집합을 통해 하나의 클래스에서 변수를 통해 해당 클래스를 리턴 - 사용자는 상위단을 알 필요 없이 선택에 따라 객체를 받을수 있음 - ex : Connect() ------> httpConnect() | ------->ftpConnect() - 사용자의 입력에 따라 http or ftp 객체를 리턴 - 상위단에서는 하위단에서 구현되여야 할 함수를 선언(abstract) 3. 파사드 : 인터페이스를 통해 사용자의 편의성 제공 목적 - 사용..
sonarQube 정적 코드 분석 (기초편) 1. docker kitematic를 통한 sonarqube 다운로드 및 설치 2. http://localhost:32768/about 로 접속 로그인 (아이디 / 패스워드 : admin / admin ) 3. create new project ( 이름은 아무거나 ) 4. 토큰 생성 클릭 5. 언어와 실행할 os 선택 ( python // macos 선택 ) download를 클릭하여 sonar-scanner 실행 파일 다운로드 (화면상의 Download 클릭!) https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/ SonarScanner | SonarQube Docs The SonarScanner is the scanner to use when ..