A kód helyes végrehajtásához: a belépési pont -- a main csomagban lévő main függvény package main import ( "crypto/md5" "fmt" ) var alphabet = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func RecoverPassword(h []byte) string { return "" } func hashPassword(in string) []byte { h := md5.Sum([]byte(in)) return h[:] } func main() { tests := []string{"a", "12", "abc333d"} ok := true for _, exp := range tests { h := hashPassword(exp) act := RecoverPassword(h) if act != exp { fmt.Printf("Hiba: várt %q, kapott %q\n", exp, act) ok = false } } if ok { fmt.Println("Minden teszt sikeresen átment") } }
Golang
Feltétel 3 entitás van: felhasználó, chat, üzenet • A felhasználónak van neve és regisztrációs dátuma • A chatnak van neve és létrehozási dátuma • Az üzenet szövege, szerzője és létrehozási dátuma van • Egy felhasználó egyszerre több chatben is lehet • Az üzenet kötelezően tartozik egy chathez, nem lehet több chathez tartozni egyszerre • A domaint táblázatok formájában kell leírni -- elosztott -- message_count a chat-ekben limit 100 --getShard(time zone) -> shard_id -> 1 --getShard(time zone) -> shard_id -> 2 --shard1 [1..100] --shard2 [101..200] CREATE TABLE users ( id int PRIMARY KEY, name varchar(255) NOT NULL, reg_at TIMESTAMP NOT NULL DEFAULT NOW() ); CREATE TABLE chats ( id int PRIMARY KEY, name VARCHAR(255) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT NOW(), message_count int NOT NULL CHECK <= 100 ); CREATE TABLE user_chats ( user_id int not null REFERENCES users(id), chat_id int NOT NULL REFERENCES chats(id), PRIMARY KEY (user_id, chat_id) ); CREATE TABLE messages ( id int PRIMARY KEY, chat_id int NOT NULL REFERENCES chats(id), author_id int NOT NULL REFERENCES users(id), created_at TIMESTAMP NOT NULL DEFAULT NOW(), text TEXT NOT NULL );
Mi a különbség a folyamatok, szálak és goroutine-ok között a Go-ban?
Beszélj általánosságban a projektről — mit jelentett ez a végfelhasználó számára?
Mi az a versenyhelyzet (race condition) a Go-ban? Adj példát.
Hogyan ölünk meg egy folyamatot Linuxban? Mit tegyünk, ha a kill pid nem segít?
Írjon SQL-lekérdezést, hogy megjelenítse azoknak a szerzőknek a listáját, akik több mint 10 könyvet írtak (táblák: szerzők, könyvek, sok-sok kapcsolat)
Mi az az EXPLAIN és az EXPLAIN ANALYZE a PostgreSQL-ben, mi a különbség?
3 entitás van: felhasználó, chat, üzenet • A felhasználónak van neve és regisztrációs dátuma • A chatnek van neve és létrehozási dátuma • Az üzenetnek van szövege, szerzője és létrehozási dátuma • A felhasználó egyszerre több chatben is lehet • Az üzenet kötelezően tartozik egy chathez, és nem lehet több chathez tartozni egyszerre • A tárgyterületet táblázatok formájában kell leírni
Mesélj egy érdekes/nehezebb technikai feladatról, amit megoldottál
Kódellenőrzés: cache Go-ban mutex-szel. Találja meg a problémákat és javasoljon fejlesztéseket. Feltétel: olvasási/írási terhelés 80/20.
Milyen adatbázisokkal dolgozott legközelebb?
Hogyan valósítjuk meg a Go-szolgáltatás graceful shutdownját Kubernetesben egy új verzió telepítésekor?
Milyen veremmel dolgozott leggyakrabban?
Milyen HTTP módszerek léteznek? Melyek azok idempotensek?
főcsomag import ( "crypto/md5" "fmt" ) var alphabet = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func JelszóVisszaállítása(h []byte) string { return "" } func jelszóHash(in string) []byte { h := md5.Sum([]byte(in)) return h[:] } func main() { tests := []string{"a", "12", "abc333d"} ok := true for _, exp := range tests { h := jelszóHash(exp) act := JelszóVisszaállítása(h) if act != exp { fmt.Printf("Hiba: elvárt %q, kapott %q\n", exp, act) ok = false } } if ok { fmt.Println("Minden teszt sikeresen lefutott") } }
Írja le a HTTP-kérés és -válasz szerkezetét. Hogyan osztályozzuk a válaszkódokat?
package main import ( "crypto/md5" "fmt" ) var alphabet = []rune{'a', 'b', 'c', 'd', '1', '2', '3'} func VisszaállítJelszó(h []byte) string { return "" } func hashJelszó(in string) []byte { h := md5.Sum([]byte(in)) return h[:] } func main() { tests := []string{"a", "12", "abc333d"} ok := true for _, exp := range tests { h := hashJelszó(exp) act := VisszaállítJelszó(h) if act != exp { fmt.Printf("Hiba: várva %q, kapva %q\n", exp, act) ok = false } } if ok { fmt.Println("Minden teszt sikeresen lefutott") } } A helyes kód futtatásához: belépési pont -- main függvény a main csomagban Feladat: Implementálja a VisszaállítJelszó függvényt, amely a MD5 hash alapján rekonstruálja az eredeti jelszót, a megadott ábécé karaktereiből.
Mi motivál most arra, hogy új munkát keress?
Miért fontolgatod az új ajánlatokat? Aktív vagy passzív keresés?