Python으로 직접 Stack 구현하고 튜닝하기
·
Language
0단계 - 이 Stack은 어디서 시작된걸까?예전에 하나, 이린, 감자와 면접의 신이라는 기술 면접 스터디를 할 때, 하나가 "Java로 Stack의 주요 기능을 간단하게 직접 구현해주세요"라는 질문을 가져온 적이 있었다. 질문을 듣자마자 당황스러움이 먼저 밀려왔다. 면접 중에 라이브 코딩을 하는 경우도 많고, 자료구조를 직접 구현하는 문제가 자주 나온다는 건 알고 있었지만, 정작 나는 한 번도 스택을 직접 구현해 본 적이 없었다. 그렇지만 마음 한켠에서 "재미있겠는걸?"이라는 생각이 들어, 내가 해보겠다고 손을 들었고, 20분 정도의 시간 안에 스택같아 보이는 얼렁뚱땅 무엇인가를 만들었고 결과적으로는 잘 돌아가지는 않았지만, 꽤나 재미있던 경험이었다. (그 이후로도 가끔씩 하나는 나에게 중요한 포인트에..
상속과 합성에 대한 이해
·
Language
내가 상속과 합성에 대해서 처음 들었던 건 약 1년 전이었다. 그때 내 머릿속에 강하게 박힌 멘트는 "상속보다는 합성을 사용해라"였다. 그때는 합성에 대한 내용을 자세하게 이해하지 못해서 그냥 넘어갔고, 막연하게 상속은 좋지 못한 구조의 예시로 기억되곤 했다. 그래서 지금까지 코드를 작성하면서 상속을 직접적으로 사용한 경험이 없었다. 그런데 요즘 오브젝트를 다시 읽기 시작하면서 이전에 크게 생각하지 않고 지나쳤던 상속과 합성 부분을 정리해보고자 한다. 상속이란 상속이란, 슈퍼클래스를 서브클래스가 상속받아 사용하는 것을 말한다. 슈퍼클래스에서 사용된 필드, 메서드를 서브클래스에서도 동일하게 사용하고 확장할 수 있다. 그래서 자연스럽게 상위 클래스의 코드를 재사용할 수 있다는 것이다. 상속 관계는 'Is-a..
Java의 final은 불변성을 보장해주지 않는다.
·
Language
면접 스터디를 준비하며 Java의 불변 객체에 대해서 학습한 내용을 남겨 놓으려 한다. final 키워드는 무엇일까?final 키워드는 클래스, 메서드, 변수, 에 사용되는데 어디에 붙이느냐에 따라 용도가 조금씩 달라진다. 특히 변수나 객체의 필드에서 final 키워드는 조금 특별한 의미를 가지게 된다. 클래스클래스 앞에 final 키워드를 붙인다면 해당 클래스를 상속하는 것이 불가능하다.// 상위 클래스 public final class ParentClass { private int age; } // 하위 클래스 (불가능) public class ChildClass extends ParentClass{ public int age; } 메서드메서드 앞에 final 키워드를 붙인다면 해당 메서드의 오버라이..