지난주 한 회사의 면접에서 다음과 같은 질문과 답변을 주고 받았습니다. 면접관 : 추상 클래스와 인터페이스의 차이에 대해서 설명해 보세요. 나 : 네, 추상 클래스는 추상 메소드를 가진 클래스이고 인터페이스는 추상 메소드로만 이루어져 있는 것입니다. 면접관 : 다른 차이점은 없나요? 나 : (당황) 어... 제가 실무에서는 거의 인터페이스만 사용해 봐서... 잘 모르겠습니다. 면접관 : (실망한 표정) 네, 알겠습니다. 집에 돌아오며 생각해 보니 제가 알고 있는 것만으로도 그 자리에서 몇가지 대답을 더 할 수 있었을텐데 당황하는 바람에 제대로 답변을 못 한 부분이 아쉬웠습니다. 만약 다른 면접장에서 비슷한 질문을 받게 된다면 더 잘 대답하기 위해 추상클래스와 인터페이스의 차이에 대해 기록해 두려고 합니다..
하반기 공채 시즌입니다. 올해 하반기 신입 공채를 노리고 있는 저 역시 자소설을 수십페이지는 쓰고 있는 것 같습니다. 며칠 전 하반기 공채 시즌 중에는 처음으로 면접을 보게 되었는데 제대로 답변을 못한 부분이 있어서 기록해두고자 합니다. 아마 면접에서 떨어지게 된다면 이 질문 때문이 아닐까 싶습니다. 질문을 하신 면접관께서는 이 질문에 제대로 답변을 못 한 이후로 단 한 마디도 하지 않으셨기 때문입니다. (슬픔) 지금 제대로 공부를 해 두고 다른 곳에서 질문을 받게 되면 반드시 제대로 답변을 하도록 해야겠습니다. 질문은 final 키워드에 관한 것이었습니다. final 키워드가 무엇이냐는 질문에 저는 제가 아는대로 '단 한번만 값이 할당되는 변수에 사용하는 키워드'라고 대답했습니다. 다시말해 변하지 않는..
웹개발에서 문자열을 다루는 방법은 매우 중요합니다. 그렇다 보니 많은 웹 서비스 업체의 코딩 테스트에는 문자열을 다루는 문제가 꼭 하나씩은 포함되는데요. 때로는 이미 언어의 API에 구현되어 있는 메소드를 통해 손쉽게 해결 가능할 때도 있습니다. 그런 경우에 그 메소드를 미리 몰랐다면 괜한 고생을 하게 되겠죠. 자바의 경우 String 클래스 안에 이미 유용한 메소드들을 많이 제공하고 있습니다. 코딩테스트나 실무에서 문자열을 다룰 때 이 메소드들을 잘 알고 있다면 시간과 비용을 절감할 수 있겠죠? 실제 자바의 String 클래스를 확인해 보면서 자바에서 문자열을 어떻게 다루는지 또, 어떤 메소드를 언제 사용하면 좋을 지 알아 보도록 하겠습니다. String 자바에서 문자열은 String이라는 객체로 표현..
서블릿 컨테이너를 만드는 토이프로젝트를 진행하던 도중 내가 파일 입출력에 관해 상당히 모르고 있다는 것을 알게 되었다. 고작해야 바이트 단위로 데이터를 읽어서 내보내는 정도의 이해도 였던 것 같다. 실제로 내가 쓴 코드는 다음과 같다. public void sendFile() throws IOException { writeHeader(); List fileBytes = getFileBytes(); int writeCount = 0; byte[] bufferByte = new byte[fileBytes.size()]; for (byte fileByte : fileBytes) { bufferByte[writeCount] = fileByte; writeCount++; } outputStream.write(bu..
지금 회사에 정규직 전환하게 되면서 우아한코스에 더이상 참여하지 않게 되었지만 프리코스를 하며 받은 피드백들을 통해 배운 것이 많아서 간단하게 정리해 놓겠습니다. 내용을 요약하자면 JAVA CONVENTION을 잘 따르고 클린코드를 만들려고 노력해라, 그리고 객체 지향적인 프로그래밍을 해라 정도인 것 같습니다. 이름을 통해 의도를 드러내라 축약하지 마라 개발도구의 code format 기능을 활용하라 space도 convention이다 불필요한 공백라인을 만들지 마라 반복하지 마라 space와 tap을 같이 쓰지 마라 의미없는 주석을 달지 마라 commit 메세지를 의미있게 작성해라 README.md를 살아있는 문서로 만들어라 구현 순서도 convention이다 JAVA API를 활용해라 배열 대신 ja..
소프트웨어 유지 보수의 4대 유형 - 버그를 발견하고 고친다(교정형 유지보수, corrective maintenance) - 운영 환경의 변화에 따라 시스템을 변경한다(적응형 유지보수, adaptive maintenance) - 시스템 사용자의 요구를 반영한다(완료형 유지보수, perfective maintenance) - 품질을 높이고, 버를 방지할 방안을 모색한다(예방형 유지보수, preventive maintenance)유지보수성 가이드라인 코드 단위를 짧게 하라 목표 : 코드 단위는 15라인을 어가지 않게 작성한다. 메서드 추출(Extract Method) 메서드를 메서드 객체로 대체(Replace Method with Method Object) : 길어지는 코드를 객체로 분리 코드 단위는 간단하..
- Total
- Today
- Yesterday
- 클린코드
- 코딩의 기술
- 디자인패턴
- markov chain
- Warning
- 자바스크립트 개론
- DP
- was
- html
- GROUP BY
- 마르코프
- 크롬
- Spring in Action
- java
- 유지보수
- 동적계획법
- Count
- 마르코프 연쇄
- 자바스크립트개론
- 로그
- restful api
- 몰라서망신
- RESTful
- 야근
- Markov
- REST API
- CONVENTIONS
- 전략패턴
- 문장 생성기
- 경고
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |