Parla della tua esperienza con Kafka e FastStream
Python
Quando possiamo chiamare commit su Producer? Come evitare duplicati durante il commit manuale del batch?
Vengono fornite tre tabelle: 1. Utenti (users): - id (identificativo univoco dell'utente). - name (nome dell'utente). 2. Corsi (courses): - id (identificativo univoco del corso). - name (nome del corso). - price (prezzo del corso). 3. Corsi degli studenti (student_courses): - id (identificativo della registrazione). - student_id (identificativo dell'utente). - course_id (identificativo del corso). Si richiede: Mostrare tutti gli utenti che hanno acquistato corsi per un importo superiore a 10.000, nel formato: - user_name (nome dell'utente). - total_price (somma totale degli acquisti). Codice di partenza select * from users limit 10; select * from courses limit 10; select * from student_courses limit 10;
È possibile creare un iteratore e un generatore infiniti? Di cosa hai bisogno per questo?
```python import asyncio from typing import List, Optional class Chunk: def __init__(self, items: List[dict]): self.items = items @property def size(self) -> int: return len(self.items) class Producer: async def next(self) -> Optional[Chunk]: # restituisce un batch di dati o None ... async def commit(self, chunks: List[Chunk]) -> None: # conferma l'elaborazione riuscita dei chunk ... class Consumer: max_batch_size = 100 async def consume(self, chunks: List[Chunk]) -> None: total_size = sum(chunk.size for chunk in chunks) if total_size > self.max_batch_size: raise ValueError("batch troppo grande") # elaborazione dati ... producer = Producer() consumer = Consumer() async def process(): while True: chunk = await producer.next() if chunk is None: break try: await consumer.consume([chunk]) await producer.commit([chunk]) except Exception as e: print("errore ma continua:", e) continue if __name__ == "__main__": asyncio.run(process()) ```
Cosa fare con un chunk problematico che causa costantemente eccezioni durante l'elaborazione? Come non rimanere bloccati e andare avanti?
Spiega il comportamento di una funzione con un argomento mutabile di default. Cosa mostreranno le stampe?
Parlami dei decoratori in Python: che pattern sono e come implementare un decoratore con argomenti?
Principio di sostituzione di Liskov — raccontami di più
Parlami di uno dei tuoi ultimi progetti che ti ha colpito. Di che progetto si trattava, cosa hai fatto esattamente lì e perché ti ha colpito?
Parlami del tuo team attuale e dei progetti in [banca/azienda]
Parli dei principi della POO: incapsulamento, ereditarietà, polimorfismo, astrazione
Cosa sai della nostra azienda?
Parli dell'uso delle dataclass nel tuo progetto e perché le hai scelte
Come sceglierai tra più offerte? Cosa è importante per te?
Parla dei principi SOLID
se total_size > self.max_batch_size: raise ValueError("la batch è troppo grande")