Golang
Atcerieties situāciju no jūsu iepriekšējās pieredzes, kad redzējāt, ka arhitektūras risinājums, ko ierosinājis komandas vadītājs vai arhitekts, nebija optimāls. Ko darījāt šādā situācijā? Vai kādā veidā aizstāvējāt savu viedokli?
Vai ir iespējams realizēt RPC caur REST un otrādi? Kāda ir būtiskā atšķirība?
Kas notiek, kad sērijas ietilpība ir izsmelta un pievienots vēl viens elements?
Kādas ir atšķirības starp HTTP/1, HTTP/2 un HTTP/3?
Kas vēl bija komandā, izņemot tevi un komandas vadītāju?
Kas ir komandas lielums?
Kas jums tuvāk — produkta izstrāde vai infrastruktūras izstrāde?
Cik aktīva ir šobrīd meklēšana? Vai jau plānojat pamest [uzņēmumu] vai tikai skatāties interesantas piedāvājumus?
Dokumentu atjauninājumi nonāk pakalpojumā message Document { string Url = 1; // Dokumenta URL, tā unikālais identifikators uint64 PubDate = 2; // deklarētais publicēšanas laiks uint64 FetchTime = 3; // šī dokumenta atjauninājuma saņemšanas laiks, to var uzskatīt par versijas identifikatoru. Pāris (Url, FetchTime) ir unikāls. string Text = 4; // dokumenta teksts uint64 FirstFetchTime = 5; // sākotnēji nav, jāaizpilda } Dokumenti var ienākt jebkurā secībā (ne tajā, kā tie tika atjaunināti), un var būt dublēti ziņojumi. Izvadā ir nepieciešams veidot tādas pašas ziņas, bet ar labotiem laukiem saskaņā ar šīm noteikumiem (visu zemāk minēto attiecas uz dokumentu grupu ar vienu un to pašu Url lauku): Text un FetchTime lauki jābūt tādiem kā lielākajam līdz šim saņemtajam FetchTime dokumentam. PubDate jābūt tādam kā mazākajam FetchTime ziņojumam. FirstFetchTime jābūt vienādai ar mazāko FetchTime vērtību. Citādi sakot, katru brīdi mēs ņemam PubDate un FirstFetchTime no pirmās versijas, ko esam saņēmuši līdz šim (ja tās sakārtotu pēc FetchTime), un Text – no pēdējās. Koda interfeiss var tikt īstenots šādi: type Processor interface { Process(doc *Document) (*Document, error) } Šis kods darbosies pakalpojumā, kas lasa ziņas no rindas (Kafka vai līdzīgi), un arī raksta rezultātu atpakaļ rindā. Ja Process atgriež Null, nekas netiek rakstīts rindā.
Iedomājieties situāciju: jūs ierodaties projektā, kur kods ir rakstīts gadiem ilgi, ir daudz legacy, nav testu, un viss ir gandrīz nedarbojas. No kurienes sāktu šādā situācijā, ja nepieciešams ieviest jaunu funkciju?
Vai pprof vienmēr parādīs, ka tev ir atmiņas noplūde vai esi pārsniedzis limitu?
Pastāsti īsi, ar ko nodarbojies iepriekšējās darba vietās un kādas funkcijas esi realizējis.
Implementējiet funkciju, kas pieņem []any un delta int. Jāpalielina tikai pirmās parādības unikālo skaitļu (int) ar delta. Citi tipi un atkārtoti skaitļi jāatstāj nemainīti. Funkcija jāatgriež atjauninātais saraksts un 2 skaitļus: updated – cik unikālo skaitļu ir mainīti, duplicates – cik skaitlisko elementu ir dubultoti func IncrementUniqueIntsInMixed(xs []any, delta int) ([]any, int, int) { // jūsu kods } // Piemērs: xs := []any{1, "a", 5, "b", 1, 0, 5} u, d, s := IncrementUniqueIntsInMixed(xs, 3) // xs == []any{4, "a", 8, "b", 1, 3, 5} // u == 3 // unikālie skaitļi: 1, 5, 0 // d == 2 // dubultie skaitļi: otrais 1, otrais 5
Kāda ir darbību sarežģītība ar karti sliktākajā gadījumā sadursmju gadījumā?
Pastāstiet par Transactional Outbox paraugu — kā tas darbojas un kam tas tiek izmantots?
Vai jums ir pieredze vaicājumu optimizēšanā relāciju datu bāzēs?
import "fmt" func maxDistants(arr []int) int { maxDist := 0 lastOne := -1 for i := 0; i < len(arr); i++ { if arr[i] == 1 { if lastOne == -1 { maxDist = i } else { dist := (i - lastOne) / 2 if dist > maxDist { maxDist = dist } } lastOne = i } } if arr[len(arr)-1] == 0 { dist := len(arr) - 1 - lastOne if dist > maxDist { maxDist = dist } } return maxDist } func main() { fmt.Println(maxDistants([]int{1, 0, 0, 0, 1})) }
Kādi ir jūsu algu gaidījumi un vēlamais prezentācijas formāts?
Cik daudz goroutine var izveidot vienā mašīnā? Kā skaitīt?
Kā jūs optimizējāt meklēšanas skriptus?