해당 글은 마크다운 언어로 작성되었습니다.
C언어
Static 키워드와 메모리의 이해
int increment()
{
static int x = 0;
x += 2;
reutrn x;
}
int main()
{
int x = 1;
int sum = 0;
for(int i = 0; i<4; i++)
{
x++;
sum += increment();
}
printf("%d", sum);
}
구조체
struct Node {
int value;
struct Node* next;
};
void func(struct Node* node) {
while (node != NULL && node->next != NULL) {
int t = node->value;
node->value = node->next->value;
node->next->value = t;
node = node->next->next;
}
}
int main() {
struct Node n1 = {1, NULL};
struct Node n2 = {2, NULL};
struct Node n3 = {3, NULL};
n1.next = &n3;
n3.next = &n2;
func(&n1);
struct Node* current = &n1;
while (current != NULL) {
printf("%d", current->value);
current = current->next;
}
}
이중 포인터
#include <stdio.h>
void func(int** arr, int size){
for(int i=0; i<size; i++){
*(*arr + i) = (*(*arr+i) + i) % size;
}
}
int main(){
int arr[] = {3,1, 4, 1, 5};
int* p = arr;
int** pp = &p;
int num = 6;
func(pp, 5);
num = arr[2];
printf("%d", num);
return 0;
}
JAVA
배열, equals() 메서드, 향상된 for 문
public class Main {
static void func(String[] m, int n) {
for (int i = 1; i < n; i++) {
if (m[i-1].equals(m[i])) {
System.out.print("O");
} else {
System.out.print("N");
}
}
for (String mo : m) {
System.out.print(mo);
}
}
public static void main(String[] args) {
String[] m = new String[3];
m[0] = "A";
m[1] = "A";
m[2] = new String("A");
func(m, 3);
}
}
예외처리
public static void main(String[] args) {
int sum = 0;
try {
func();
} catch(NullPointerException e) {
sum = sum + 1;
} catch(Exception e) {
sum = sum + 10;
} finally {
sum = sum + 100;
}
System.out.print(sum);
}
static void func() throws Exception {
throw new NullPointerException();
}
}
오버라이딩
class B {
int x = 3;
int getX() {
return x * 2;
}
}
class A extends B {
int x = 7;
@Override
int getX() {
return x * 3;
}
}
public class Annotation {
public static void main(String[] args) {
B b1 = new A();
A b2 = new A();
System.out.print(b1.getX() + b1.x + b2.getX() + b2.x);
}
}
오버로딩과 제네릭
class Printer
{
void print(Integer a) {System.out.print("A" + a);}
void print(Object a) {System.out.print("B" + a);}
void print(Number a) {System.out.print("C" + a);}
}
public class Generic
{
public static void main (String[] args)
{
new Container<>(0).print();
}
public static class Container
{
T value;
public Container(T t) {value = t;}
public void print() {new Printer().print(value);}
}
}
Python
데이터 슬라이싱, 음수 인덱싱
def test(lst):
for i in range(len(lst) // 2):
lst[i], lst[-i-1] = lst[-i-1], lst[i]
ls = [1,2,3,4,5,6]
test(ls)
print(sum(ls[::2]) - sum(ls[1::2]))
데이터 타입
def func(value):
if type(value) == type(100):
return 100
elif type(value) == type(""):
return len(value)
else:
return 20
a = '100.0'
b = 100.0
c = (100, 200)
print(func(a) + func(b) + func(c))
SQL
SELECT, JOIN, 중첩 SELECT
SELECT
count(*)
FROM employee AS e JOIN project AS p ON e.project_id = p.project_id
WHERE p.name IN (
SELECT name FROM project p WHERE p.project_id IN (
SELECT project_id FROM employee GROUP BY project_id HAVING count(*) < 2
)
);
개념
LRU 페이지 교체 알고리즘
LRU 페이지 교체 알고리즘에 따른 페이지 부재 횟수를 작성하시오. (프레임 3칸)
[7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1]
스머핑
ICMP, 송신 주소를 공격 대상의 IP 주소로 위장하고, 수신 주소를 해당 네트워크 라우터의 브로드캐스트 주소로 설정하는 공격으로 과부화 시키는 기법은? ICMP 패킷을 크게 만들어서 과부화 시키는 죽음의 핑과 같은 서비스 공격 유형이다.
VPN
인터넷을 통해 장치 간 사설 네트워크 연결을 생성하는 서비스로 장치의 실제 IP 주소를 가상 IP 주소로 대체하고, 데이터를 암호화하고, 데이터를 전 세계 보안 네트워크로 라우팅함으로써 정보를 보호하는 기법
디자인 패턴
( ) 패턴은 객체 간의 상호 작용하는 방법과 책임을 분배하는 방법 에 중점을 두는 디자인 패턴으로 Command, Interpreter, Memento, Observer, Visitor등이 존재한다.
커버리지
1. 코드 내의 각 분기점이 true 또는 false로 평가될 때마다 해당 분기점이 모두 테스트 되는 것을 목표로 한다. 각 분기점이 모든 가능한 경로로 실행되었는지 확인하는 데 사용되는 커버리지
2. 코드의 흐름을 여러 갈래로 나누는 조건문 또는 선택문을 의미한다. 예를 들어, if-else 문이나 switch 문에서 조건에 따라 실행 경로가 달라질 때를 의미한다.
3. 개별 조건문 내에 있는 각각의 조건이 true와 false 모두를 만족하도록 테스트하는 것을 의미한다. 예를 들어, if (A && B)와 같은 구문에서 A와 B가 각각 true와 false가 되는 경우를 테스트하는 것이 목표이다.
(보기)
㉠ 조건/결정 커버리지
㉡ 결정 커버리지
㉢ 조건 커버리지
㉣ 분기 커버리지
㉤ 변경 조건/결정 커버리지
㉥ 문장 커버리지
㉧ 다중 조건 커버리지
슈퍼키, 외래키, 대체키, 후보키
1. 참조하는 테이블의 기본 키(Primary Key)를 가리키며, 데이터 무결성을 유지하는 데 중요한 역할을 한다.
2. 유일성과 최소성을 모두 갖춘 키이다.
3. 후보키 중에서 기본 키로 선택되지 않은 나머지 키이다.
4. 유일성을 만족시키지만, 최소성은 만족시키지 않는다.
(보기)
㉠ 슈퍼키
㉡ 외래키
㉢ 대체키
㉣ 후보키
개체무결성
( ) 무결성은 데이터베이스의 테이블에서 기본 키(Primary Key) 값을 반드시 유일하고 NULL이 아니게 유지해야 한다는 규칙을 의미한다.
URL의 구조
추가적인 질의를 제공하는 부분으로, 웹 서버에 전달할 추가 데이터를 나타낸다.( )
자원 경로를 나타내며, 서버 상에서 해당 리소스의 위치를 지정한다. ( )
웹 프로토콜을 정의하는 부분으로, 예를 들어 HTTP, FTP 등의 방식을 나타낸다. ( )
호스트와 포트 번호를 나타내는 부분으로, 서버 주소와 함께 포트번호를 나타낸다. ( )
특정 페이지 내의 위치를 가리키며, 문서 내 특정 섹션으로 이동하는 데 사용된다. ( )
(보기)
1 scheme
2 authority
3 path
4 query
5 fragment
Ad-hoc Network (애드혹 네트워크)
중앙 집중식 인프라 없이, 즉 사전 설정된 네트워크 기반 시설이 없이 구성된 자율형 네트워크를 의미합니다. 이러한 네트워크는 노드(주로 무선 장치)가 서로 직접 연결하여 통신하며, 군사 작전 중에 실시간으로 정보를 공유하기 위한 네트워크로 사용된다.