목록기본개념 (29)
VioletaBabel
델리게이트메소드에 대한 참조로, 콜백 구현. 델리게이트에 메소드의 주소를 할당 후 호출하면 델리게이트가 메소드를 호출해 줌.123456789101112131415161718 delegate int MyDelegate(int a, int b); class Calc { public int Plus(int a, int b) { return a + b; } public static int Minus(int a, int b) { return a - b; } } class Program { static void Main(string[] args) { Calc c = new Calc(); MyDelegate cb; cb = new MyDelegate(c.Plus); Console.WriteLine(cb(3, 4));..
예외 처리섬세한 처리를 요구하는게 아니라 예외를 싸그리 다룰 경우엔 IndexOutOfRangeException이 아닌 그냥 Exception을 쓴다.12345678910 int[] ar = { 0, 1, 2 }; try {//실행할 코드 for (int i = 0; i
배열1234567891011121314 class Program { static void Main(string[] args) { int[] a = new int[5]; for(int i = 0; i = 60) ? true : false; } static void Main(string[] args) { int[] score = new int[5] { 89, 59, 68, 90, 84 }; foreach (int i in score)//89 59 68 90 84 Console.WriteLine(i); Console.WriteLine("---"); //int형 배열 정렬. int의 경우 는 없어도 됨. Array.Sort(score); foreach (int i in score)//59 68 84 89 90 ..
인터페이스 클래스와 비슷해보이나 메소드, 이벤트, 인덱서, 프로퍼티 만을 가질 수 있다.모든 것이 public이며, 인스턴스를 만들 수 없다.단, 클래스가 인터페이스를 상속받게 할 수 있으며 이런 경우엔 인터페이스에 선언된 모든 메소드 및 프로퍼티를 클래스에 구현해줘야한다.12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.IO..
스레드123456789101112131415161718192021222324252627282930using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Threading; // 스레드 사용 namespace ConsoleApp1{ class Program { static void Fa() { for (int i = 0; i -1; --i) Console.WriteLine("b{0}", i); } static void Main(string[] args) { Thread t1 = new Thread(Fa); Thread t2 = new Thre..
형변환1234567int i;double r = 20;string t; i = Convert.ToInt32(10.1); // i = (int)10.1;t = Convert.ToString(r); // t = r.ToString();i = Convert.ToInt32(t); // i = int.Parse(t);cs --출력문12Console.Write("Hello, ");Console.WriteLine("World!");cs 커서 이동1Console.SetCursorPosition(10, 10); // 커서를 10,10 위치로 이동.cs --입력문 123int i = Console.Read(); // Console.Read()는 한 글자만을 입력받아 int형으로 저장char s = (char)i; // 그..
테스팅 관련 질문1. 실생활에서 접하는 객체를 테스트하라2. 소프트웨어 하나를 테스트하라3. 주어진 함수에 대한 테스트 코드를 작성하라4. 발생한 이슈에 대한 해결책을 찾아라 --평가할 요소 1. 큰 그림을 이해하고 있는가 : 어느게 더 중요하고 어느게 덜 중요한지 우선순위를 매길 수 있는가. 2. 퍼즐 조각을 제대로 맞출 줄 아는가 : 소프트웨어가 어떻게 동작하는지와 그 소프트웨어가 더 큰 생태계의 일부로 어떻게 귀속되는지 이해하는가 3. 조직화 : 문제에 구조적으로 접근하고 있는가, 아니면 생각나는 대로 지르는가. 4. 실용성 : 실제로 적용 가능한 합리적인 테스트 계획을 세울 수 있는가 --실제 세계에서 객체 테스트하기 1단계 : 사용자는 누구인가? 제품의 사용 목적은 무엇인가?문제를 풀기 전에 해..
자주 쓰이는 정렬 1. 버블 정렬배열의 첫 원소보다 그 다음 원소를 비교해가며 두 원소를 바꾸는 작업을 계속한다.평균 및 최악 실행 시간 O(n^2), 메모리 O(1) 2. 선택 정렬선형 탐색을 하며 매 탐색마다 가장 작은 원소를 맨 앞으로 보내는 방식을 반복한다.평균 및 최악 실행 시간 O(n^2), 메모리 O(1) 3. 병합 정렬배열을 절반씩 나누어 각각 정렬한 후, 둘을 합하여 다시 정렬하는 방법.평균 및 최악 실행 시간 O(nlogn), 메모리는 상황에 따라 다름 4. 퀵 정렬무작위로 선정한 한 원소를 이용해, 작은 원소는 앞으로, 큰 원소는 뒤로 보낸다.평균 실행 시간 O(nlogn), 최악 실행 시간 O(n^2), 메모리 O(logn) 5. 기수 정렬각 자릿수를 순회해 나가며 각 자리의 값에 ..
문제를 다루는 방법 1. 소통하라 : 시스템 설계 문제는 의사소통 능력을 평가하기 위함이므로 끊임없이 의사소통하도록 한다. 질문을 던지고 발생할 수 있는 문제점을 열린 마음으로 받아들여라. 2. 처음엔 포괄적으로 접근하라 : 알고리즘으로 바로 뛰어들지 말라. 한 부분만 과도하게 파고들지 마라. 3. 화이트보드를 사용하라 : 내가 제안하는 그림을 그리며 설명하라. 4. 면접관이 우려하는 부분을 인정하라 : 면접관이 짚은 문제점을 인정하고 적절하게 수정하라. 5. 가정을 할 때 주의하라 : 잘못된 가정을 주의하라. 6. 가정을 명확히 언급하라 : 내가 실수를 했을 때 바로잡아줄 수도 있고, 내가 어떤 가정을 했는지를 다른 사람들도 알 수 있게 해준다. 7. 필요하다면 어림잡아 보라 : 내가 알고 있는 다른 ..
객체 지향 설계 : 기술적 문제나 실제 생활에서 접하는 객체들을 구현하는 클래스, 메서드들을 대략적으로 그려봄 유지보수가 용이한 객체 지향 코드를 만드는 법을 이해하고 있는지를 가림. --접근법 단계 1 : 모호성의 해소가장 중요한 것은 누가 어떻게 사용할 것인지를 아는 것. 질문에 따라서는 누가, 무엇을, 어디서, 언제, 어떻게, 왜가 필요할 수도 있다. 단계 2 : 핵심 객체의 설계시스템에 넣을 핵심 객체(core object)가 뭔지를 생각해야 한다. 단계 3 : 관계 분석객체 사이의 관계를 분석해야 한다.어떤 객체가 어떤 객체의 멤버이거나 상속을 받아야하거나 다대다 관계인지 일대다 관계인지를 알아야 한다.설계가 얼마나 일반적이어야 하는지는 충분한 질문과 상의를 거쳐야 한다. 단계 4 : 행동 분석..