2:53 자바에서 업캐스팅 형태로 클래스가 구성되었을 경우, 부모 클래스에 존재하지 않는 메서드를 자식 클래스에서 정의할 수 없다고 배웠습니다. 생성자도 이와 동일하게, 업캐스팅에서 부모에 존재하지 않는 생성자를 자식 클래스가 가질수 없는게 맞나요? 그게 맞다면, class C의 생성자는 super(a/3)가 있기 때문에 에러가 발생하지 않는게 맞나요? 헷갈리는 부분입니다 ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 앱 프로젝트를 하다 궁금한 점이 생겨 질문드립니다. 지금 같은 경우에 상품을 post 방식으로 그때그때 필요한 것을 추가하는 식 같은데 만약에 처음부터 어떤 항목들인지 지정되어있는 경우에는 어떻게 처리하면 될까요(초기 데이터 설정)? 찾아보니 data.sql SQL 초기화할 때 실행되는 파일이다. 여기에 SQL문을 작성해주면 된다. main/resources/db/data.sql에 생성하면 별도 설정없이도 자동으로 해당 파일을 실행해준다. insert into INTEREST (type) values ('하이킹'),('서핑'),('다이빙'),('스노클링'),('사파리'),('스키'),('자전거'), ('액티비티'),('음식 체험'),('음악 감상'),('공연 감상'),('전시회'),('예술 관람'), ('사진 촬영'),('지역 축제'),('계획형'),('즉흥형'); 이런식으로 한다고 되어있는데 맞는지 궁금합니다.. 이 화면을 구현하고 싶은데 @Entity @Getter @Builder @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Interest { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String type; } 이렇게 구현하면 될까요..?
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다! [질문 전 답변] 1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요] 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요] 3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요] ( https://www.inflearn.com/blogs/1719 ) 4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. [질문 하기] PS C:\Users\dltkd\k8s-edu\_Lecture_prom_learning.kit\ch2\2.3> vagrant up >> Bringing machine 'cp-k8s-1.30.3' up with 'virtualbox' provider... Bringing machine 'w1-k8s-1.30.3' up with 'virtualbox' provider... Bringing machine 'w2-k8s-1.30.3' up with 'virtualbox' provider... Bringing machine 'w3-k8s-1.30.3' up with 'virtualbox' provider... ==> cp-k8s-1.30.3: Checking if box 'sysnet4admin/Ubuntu-k8s' version '0.8.6' is up to date... ==> cp-k8s-1.30.3: Clearing any previously set network interfaces... There was an error while executing VBoxManage , a CLI used by Vagrant for controlling VirtualBox. The command and stderr is shown below. Command: ["hostonlyif", "create"] Stderr: 0%...E_FAIL VBoxManage.exe: error: Failed to create the host-only adapter VBoxManage.exe: error: Querying NetCfgInstanceId failed (ERROR_FILE_NOT_FOUND) VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component HostNetworkInterfaceWrap, interface IHostNetworkInterface VBoxManage.exe: error: Context: "enum RTEXITCODE __cdecl handleCreate(struct HandlerArg *)" at line 105 of file VBoxManageHostonly.cpp 이런 에러가 발생합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 8:55분 즈음부터 말씀하시는 내용이 DB에 쿼리까지 다 날려서 회원가입도 되고 뭐 아이디 찾기, 멤버 찾기 등 다 되고 마지막에 테스트가 끝나면 데이터를 롤백한다고 하셨는데요.(정확히는 반영을 안함). 그래서 실제로 테스트 실행을 해보면 정상적으로 동작했다는 뜻에서 Run 창에 모두 초록불로 들어와있지만 DB에서는 아무것도 반영안되어있는게 보이는데요, 그럼 실제로 테스트 할때도 DB에는 들어갔는지 실물확인은 못한채, Run창에서 초록불로 정상적으로 동작했다는 것으로만 확인을 해야하나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 첫번째 질문! 2번 네모박스와 3번 네모박스에서 궁금한 점인데 2번은 Student student1; student1 = new Student(); 이고 3번은 Student student2 = new Student(); 이렇게 한번만 코드를 작성하셨는데 2번 박스의 Student student1는 한번만 선언해주면 되는건가요..? 두번째 질문! 1번 네모박스 즉 student라는 클래스를 만들고 student클래스를 사용하기 위해서는 같은 Class1 폴더 안에 있어야만 하나요? 약간 html에서 css 불러올때 처럼 한 폴더에 있어야하는 그런건가요? 입문자수준이라서 질문이 이상하다면 수정하겠습니다ㅜㅜ, 감사합니다.
public E remove(int index) { Node<E> removeNode = getNode(index); E removedItem = removeNode.item; if (index == 0) { head = removeNode.next; } else { Node<E> prev = getNode(index - 1); prev.next = removeNode.next; } removeNode.item = null; removeNode.next = null; size--; return removedItem; } private Node<E> getNode(int index) { Node<E> curr = head; for (int i = 0; i < index; i++) { curr = curr.next; } return curr; } MyLinkedList 클래스에 정의된 메서드 중 일부입니다. 링크드리스트의 경우 맨 앞 노드를 삭제하는 경우 참조의 조정만으로 삭제할 수 있어 O(1)이 소요된다고 배웠습니다. 연결리스트 내부의 필드로 가지고 있는 first를 활용해 바로 참조하지 않고 getNode() 를 사용하면 메서드가 갖는 시간 복잡도를 따르지 않나요? getNode() 는 평균적으로 O(n)이 걸리는 메서드라 생각해서 이 메서드가 사용되는 remove() 의 경우 마찬가지로 O(n)인지, 어차피 getNode() 를 사용해도 인덱스 1이니 O(1)로 간주하는지 궁금합니다.
1.커뮤니티 라는 버튼이 없음 2. 영상 (조건문 5:30초 ~ ) 3. 수업자료를 출력해서 보고있는데 개판으로 입력되어있네요...? 8만원짜리 강의 퀄리티면 조금 더 신경써주시면 좋겠네요... 아주 기본적인 조건문 예시 class NumberCount { public static void main(String[] args){ int number =3 ; if (number >5){ System.out.println("5보다 크네요"); }else{ System.out.println("5보다 크지않아요"); } } } 출력값 : 5보다 크네요 로 표기되어있는등 아주 기본적인 예시 임에도 불구하고 수업자료가 개판으로 작성되어있네요 초반에 출력해서 사용하시던가 , 다운받아보면된다고 하셨는데 종이만 날린꼴입니다. 종이 낭비는 둘째치고 너무 기본적인 코드에서 이런 상식적이지않은 실수를 해놓으시니 조금 당황스럽네요.
아무리 grafana접속해봐도 안뜨네요 ㅠㅠ grafana삭제하고 재성성해봐도 똑같아요. 아래는 pod로그입니다. info 레벨만 제외하고 로그 추출해봤어요 로컬로 실행해도 아래처럼 나와요 강의대로 하다보면 kubernetes-dashboard는 30000 노드포트가 열려있고, grafana는 30001 저는 30010으로 했는데 여튼, 로컬에서 telnet 으로 해보면 30000포트는 열리는데 30010 은 안열립니다. 겉에서 봤을때는 서비스가 떠있지만 제대로 외부에서 날려보면 응답이 없는상태입니다. 그런데 마스터서버 들어가서 curl날려보면 302가 나옵니다. 검색해보고 찾다찾다 안되서 다시 글남겨봅니다 ㅠㅠ
해결방법 터미널(관리자자격으로 실행) > pip install httpie 선행 조건 pip 있어야 함 환경 변수(Path) 등록되어 있어야 함 강의 수강 중 터미널에서 http 명령어 실행 시 다음 에러가 발생했습니다. 윈도우 사용자 중 같은 에러가 발생한 분이 계신 것을 확인했습니다. https://www.inflearn.com/community/questions/1050950/intellij-community-edition-terminal-http-request?srsltid=AfmBOoojOaRgnRZgvYrH2Kcow38aEmRLFMGA1DsYZrPGxKMGjDekOHgT 위 링크에서 토비님의 답변대로 했을 때 에러 발생하는 분은 다음 링크 참고해보세요. https://luji.tistory.com/99
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요 Member테이블이 형성이 안되는데 이유를 모르겠습니다.
안녕하세요 일프로님. 수업을 듣다 궁금한 점이 생겨 질문드립니다. 1.preStop sleep time을 5초로 잡은 기준이 무엇인지 궁금합니다. 구체적으로는 1)경험적으로 얻은 것인지 여부 2)하드웨어나 클라우드 서비스의 경우 EKS 같은 매니지드 서비스 마다 적절한 sleep time이 크게 달라질 수도 있을지 궁금합니다. 2. 기존 서비스의 sleep time을 40초에서 5초로 단축해도 괜찮을지 제가 인수인계 받은 사이드 프로젝트가 있는데 AWS EKS에 Spring 서버가 구현되어 있습니다. 현재 sleep time이 40초로 되어있는데 단축해도 큰 문제는 없을까요? *장애가 나도 괜찮은 서비스라 학습 목적으로 편하게 테스트 할 예정입니다.
NotificationMessage 모델에 생성자를 추가하는 이유가 Jackson 역직렬화때문에 추가하셨다 했는데 setter만 있으면 필드명과 알아서 바인딩되어서 생성자가 없어도 되는거 아닌가요? 실제로 생성자 삭제하고 message key값으로 /app/send 요청 찌르면 객체에 바인딩이 잘된상태인데 궁금합니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 문제집에서 런타임 오류시에는 입력값을 안 보여주는데 보여주면 좋겠습니다!
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 비슷한 질문이 몇 개 올라와 있는데 해결되지 않아 질문합니다. H2에서 테이블 생성하고 데이터 insert한 후 서버에서 회원 목록을 클릭하면 Whitelabel Error가 뜹니다. 2025-03-17T22:19:31.466+09:00 ERROR 2315 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalStateException: java.lang.IllegalArgumentException: No DataSource specified] with root cause java.lang.IllegalArgumentException: No DataSource specified at org.springframework.util.Assert.notNull(Assert.java:181) ~[spring-core-6.2.3.jar:6.2.3] at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:104) ~[spring-jdbc-6.2.3.jar:6.2.3] at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81) ~[spring-jdbc-6.2.3.jar:6.2.3] at hello.hello_spring.repository.JdbcMemberRepository.getConnection(JdbcMemberRepository.java:119) ~[classes/:na] at hello.hello_spring.repository.JdbcMemberRepository.findAll(JdbcMemberRepository.java:77) ~[classes/:na] at hello.hello_spring.service.MemberService.findMembers(MemberService.java:42) ~[classes/:na] at hello.hello_spring.controller.MemberController.list(MemberController.java:40) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na] at org.springframework.web.method.support .InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:257) ~[spring-web-6.2.3.jar:6.2.3] at org.springframework.web.method.support .InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:190) ~[spring-web-6.2.3.jar:6.2.3] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:986) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:891) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1088) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:978) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) ~[spring-webmvc-6.2.3.jar:6.2.3] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.2.3.jar:6.2.3] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) ~[tomcat-embed-core-10.1.36.jar:6.0] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.2.3.jar:6.2.3] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[tomcat-embed-core-10.1.36.jar:6.0] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-10.1.36.jar:10.1.36] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.2.3.jar:6.2.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.3.jar:6.2.3] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.2.3.jar:6.2.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.3.jar:6.2.3] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.2.3.jar:6.2.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.2.3.jar:6.2.3] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.tomcat.util.net .NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.tomcat.util.net.SocketProcessorBase.run (SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.tomcat.util.threads.ThreadPoolExecutor$ Worker.run (ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at org.apache.tomcat.util.threads.TaskThread$ WrappingRunnable.run (TaskThread.java:63) ~[tomcat-embed-core-10.1.36.jar:10.1.36] at java.base/ java.lang.Thread.run (Thread.java:840) ~[na:na] application.properties에는 spring.datasource.url = jdbc:h2:tcp://localhost/~/test spring.datasource.username=sa spring.datasource.password= spring.datasource.driver-class-name = org.h2.Driver 으로 작성되어 있습니다. test.mv.db를 삭제하고 다시 실행해 테이블을 만들어도 똑같은 오류가 납니다 ㅜㅜ
30:11 해당 부분에 나온 구조체 문제 관련 의견드립니다. 표로 설명하기보다는 아래와 같이 설명하는 것이 직관적이지 않을까 싶습니다. head = &a 이므로 head = {10, null} 이 됩니다 다음으로 a.n2 = &b라 하였으므로, a의 n2 자리에 b 값을 넣으면 됩니다. 따라서, head = {10, {20, null}} 이 됩니다. 또 다음으로 b.n2 = &c라 하였으므로, b의 n2 자리에 c 값을 넣으면 됩니다. 따라서, head = {10, {20, {30, null}}} 이 되게 됩니다. 이때 head -> n2를 보라고 하였으므로, {20, {30, null}}을 보면 되고, 다시 n2->n1으로 n1을 보라고 하였으므로, 위의 구조체에서 n1에 해당하는 20이 답이 됩니다