Bu 40 MQTT mülakat sorusu, IoT, gömülü sistem ve arka uç pozisyonları için işe alım yöneticilerinin gerçekten sorduklarını kapsar: temeller, QoS, oturumlar, retained message'lar, Last Will, MQTT 5 ve güvenlik. Her cevap sesli söylenebilecek kadar kısadır ve pratik bölümü, mülakatınızdan önce her kavramı canlı bir broker üzerinde nasıl kanıtlayacağınızı gösterir.
Bu MQTT Mülakat Soruları Nasıl Kullanılır
Bir cevabı okuyun, ardından bakmadan açıklamaya çalışın. Mülakatçılar ezberlenmiş tanımlardan çok ödünleşimlerle ilgilenir: QoS 0'ı ne zaman kullanırsınız, retained message'lar sizi neden şaşırtabilir, iki cihaz aynı client ID'yi paylaşırsa ne bozulur. Mümkün olduğunda pratik bölümündeki komutları ücretsiz genel MQTT broker üzerinde çalıştırın; böylece okuduğunuzu değil, gördüğünüzü anlatabilirsiniz.
Temeller (Soru 1-10)
1. MQTT nedir?
TCP üzerinde çalışan, kısıtlı cihazlar ve güvenilmez ağlar için tasarlanmış hafif bir yayınla/abone ol mesajlaşma protokolü. 3.1.1 ve 5.0 sürümleri OASIS standartlarıdır.
2. Broker nedir?
Yayınlanan tüm mesajları alan ve eşleşen aboneliklere sahip client'lara yönlendiren sunucu. Ayrıca oturumları, retained message'ları ve Will'leri yönetir. Bkz. bir MQTT broker'ın ne yaptığı.
3. Yayınla/abone ol, istek/yanıttan nasıl ayrılır?
Yayıncılar ve aboneler birbirini hiçbir zaman doğrudan adreslemez; broker onları uzay, zaman ve senkronizasyon açısından ayrıştırır. Yayınla/abone ol modeli yazımız üçünü de açıklar.
4. MQTT TCP mi yoksa UDP mi kullanır?
İsteğe bağlı olarak TLS veya WebSocket ile sarılmış TCP. MQTT-SN, UDP ve datagram ağları için olan varyanttır.
5. Standart portlar nelerdir?
Düz TCP için 1883, TLS için 8883. WebSocket portları broker'a özgüdür; /mqtt yoluyla 8083 ve 8084 yaygındır.
6. Topic nedir?
site1/line2/temp gibi seviyeleri / ile ayrılmış bir UTF-8 dizesi. Topic'ler, onlara yayın yapıldığında örtük olarak oluşturulur.
7. + ve # joker karakterlerini açıklayın.
+ tam olarak bir seviyeyle eşleşir; # kalan tüm seviyelerle eşleşir ve bir filtrenin son karakteri olmalıdır. Joker karakterler yalnızca aboneliklerde geçerlidir.
8. Client ID ne için kullanılır?
Broker üzerindeki oturumu tanımlar. Aynı kimliğe sahip iki bağlantı, broker'ın eskisinin bağlantısını kesmesine yol açar ve çoğunlukla bir yeniden bağlanma döngüsü oluşturur.
9. Keep-alive nedir?
Bir client'ın taahhüt ettiği saniye cinsinden azami sessizlik süresi. Boştayken PINGREQ gönderir; broker trafik olmadan yaklaşık 1,5 katı süre geçtikten sonra bağlantıyı düşürür.
10. MQTT IoT için neden popüler?
Küçük paket ek yükü, push teslimatı, NAT üzerinden çalışan yalnızca giden bağlantılar ve QoS ile kalıcı oturumlar gibi yerleşik güvenilirlik özellikleri.
QoS ve Teslimat (Soru 11-18)
11. Üç QoS seviyesini tanımlayın.
QoS 0, onaysız en fazla bir kez teslimattır. QoS 1, PUBACK ile en az bir kez teslimattır. QoS 2, PUBREC, PUBREL ve PUBCOMP kullanarak tam olarak bir kez teslimattır.
12. QoS uçtan uca mıdır?
Hayır. QoS, yayıncıdan broker'a ve broker'dan aboneye ayaklarına ayrı ayrı uygulanır. Abone, yayınlanan QoS ile abonelik QoS'undan düşük olanla alır.
13. QoS 0'ı ne zaman seçersiniz?
Bir sonraki örneğin bir öncekinin yerini aldığı ve ara sıra yaşanan bir kaybın kabul edilebilir olduğu sık telemetri için.
14. QoS 1 neden yinelemelere yol açabilir?
PUBACK kaybolursa gönderen DUP bayrağı ayarlanmış olarak yeniden iletir. Uygulamalar idempotent olmalı veya yinelemeleri ayıklamalıdır.
15. QoS 2'nin maliyeti nedir?
Mesaj başına dört paket ve her iki tarafta ek durum; bu da verimi düşürür. Yalnızca yinelemeler gerçekten zararlı olduğunda kullanın. Daha fazlası MQTT QoS seviyeleri açıklaması yazısında.
16. MQTT sıralamayı garanti eder mi?
Tek bir yayıncıdan, tek bir topic'te, aynı QoS ile gelen mesajlar sırayla ulaşır. Topic'ler veya yayıncılar arasında sıralama garantisi yoktur.
17. Inflight window nedir?
Aynı anda izin verilen onaylanmamış QoS 1/2 mesajı sayısı. MQTT 5 bunu Receive Maximum olarak sunar.
18. Bir topic'e kimse abone değilse ne olur?
Broker mesajı atar; mesaj retained değilse.
Oturumlar, Retained Message'lar ve Last Will (Soru 19-27)
19. Kalıcı oturum nedir?
Bir client ID için bağlantı kopmaları boyunca korunan broker tarafı durum (abonelikler ve kuyruğa alınmış QoS 1/2 mesajları).
20. Clean Session ile Clean Start farkı nedir?
3.1.1'de Clean Session oturumun hem yeniden kullanımını hem de ömrünü kontrol eder. MQTT 5 bunu Clean Start (bağlanırken yeniden kullanım) ve Session Expiry Interval (ömür) olarak ikiye ayırır.
21. Retained message nedir?
Bir topic'te retain bayrağıyla işaretlenmiş son mesaj; broker tarafından saklanır ve yeni abonelere hemen teslim edilir.
22. Bir retained message nasıl silinir?
Aynı topic'e retain bayrağıyla boş bir payload yayınlanır.
23. Retained message'larla ilgili yaygın bir tuzak nedir?
Bayat durum: Uzun zaman önce ölmüş bir cihaz, son retained durumu hiç temizlenmediği için hâlâ "açık" görünür. Bir Last Will ile birleştirin.
24. Last Will and Testament nedir?
Bağlanma sırasında kaydedilen ve client düzgün bir DISCONNECT olmadan, örneğin bir ağ arızasından sonra koptuğunda broker'ın yayınladığı mesaj.
25. Güvenilir bir çevrimiçi/çevrimdışı durumu nasıl kurarsınız?
Bağlandıktan sonra retained bir "online" yayınlayın ve aynı topic'te "offline" değerli retained bir Will kaydedin.
26. Will Delay Interval nedir?
Will'i erteleyen bir MQTT 5 ayarı; böylece hızla yeniden bağlanan bir client yanlış bir çevrimdışı uyarısını tetiklemez.
27. Çevrimdışı mesajlar ne kadar süre saklanır?
Oturum yaşadığı ve broker kotaları izin verdiği sürece. MQTT 5'te Session Expiry ve Message Expiry buna açık sınırlar koyar.
MQTT 5 (Soru 28-34)
28. Önemli MQTT 5 eklemelerini sayın.
Reason code'lar, user properties, oturum ve mesaj süresi, topic alias'lar, paylaşımlı abonelikler, istek/yanıt özellikleri ve gelişmiş kimlik doğrulama. Genel bakış için MQTT 5 özellikleri.
29. Reason code'lar nedir?
Onaylarda ve DISCONNECT'te sonuçları açıklayan bir baytlık kodlar; örneğin 0x87 Not authorized veya 0x97 Quota exceeded.
30. Paylaşımlı abonelik nedir?
Yük dengeleme için mesajları grup üyeleri arasında dağıtan $share/group/topic biçimindeki bir filtre.
31. Topic alias nedir?
Tek bir bağlantı içinde uzun bir topic adının yerine geçen ve PUBLISH başına bayt sayısını azaltan bir tamsayı.
32. MQTT 5 istek/yanıtı nasıl destekler?
İstekte bulunan bir Response Topic ve Correlation Data ayarlar; yanıtlayan, cevabını aynı correlation data ile o topic'e yayınlar.
33. User properties nedir?
Paketlere eklenen, HTTP başlıklarına benzer rastgele anahtar/değer dize çiftleri; içerik sürümü veya izleme kimlikleri gibi meta veriler için kullanışlıdır.
34. Message Expiry Interval nedir?
Mesaj başına bir ömür; teslim edilmemişse broker bu sürenin sonunda mesajı atar ve bayat komutların daha sonra çalıştırılmasını önler.
Güvenlik ve Operasyon (Soru 35-40)
35. MQTT nasıl güvence altına alınır?
8883 üzerinde TLS, cihaz başına benzersiz kimlik bilgileri, broker destekliyorsa en az ayrıcalıklı topic izinleri ve genel broker'larda hassas veri olmaması. Bkz. MQTT güvenliği en iyi uygulamaları.
36. Karşılıklı TLS (mutual TLS) nedir?
Client'ın kendi sertifikasını sunduğu ve böylece broker'ın onun kimliğini kriptografik olarak doğrulayabildiği TLS.
37. Üretimde 1883 portu neden kullanılmamalı?
Kimlik bilgileri ve payload'lar şifresiz taşınır ve herhangi bir ağ atlamasında yakalanabilir.
38. $SYS topic'leri nedir?
Durum bilgisi sunan, broker için ayrılmış topic'ler. Joker karakterli # abonelikleri $ ile başlayan topic'lerle eşleşmez.
39. MQTT tüketicileri nasıl ölçeklendirilir?
Yükü dağıtmak için paylaşımlı abonelikler kullanın, callback'leri hızlı tutun ve joker karakterli abonelikleri dar kapsamlı tutun.
40. Kendi barındırdığınız broker mı, yönetilen broker mı?
Kendi barındırmak tam kontrol sağlar ancak yama, sertifika, izleme ve ölçekleme işi ekler. Bir yönetilen MQTT broker bu operasyonel yükü sağlayıcıya devreder.
Mülakattan Önce Pratik Yapın
Bizzat yapmış olmanın yerini hiçbir şey tutmaz. mosquitto_pub ve mosquitto_sub kurun, rastgele bir sonek seçin ve bunları broker.connectmq.com üzerinde çalıştırın (anonim, benzersiz client ID, herkese açık veri):
# S21-22: retained message, ardından silin
mosquitto_pub -h broker.connectmq.com -p 1883 -i iq-pub-5c9d \
-t "connectmq/demo/5c9d/lamp" -m "on" -r -q 1
mosquitto_sub -h broker.connectmq.com -p 1883 -i iq-sub-5c9d \
-t "connectmq/demo/5c9d/#" -v -C 1
mosquitto_pub -h broker.connectmq.com -p 1883 -i iq-pub-5c9d \
-t "connectmq/demo/5c9d/lamp" -r -n
# S24-25: Last Will. Bunu başlatın, sonra terminali öldürün (Ctrl+C değil)
mosquitto_sub -h broker.connectmq.com -p 1883 -i iq-will-5c9d \
-t "connectmq/demo/5c9d/ping" -k 10 \
--will-topic "connectmq/demo/5c9d/status" --will-payload "offline" \
--will-retain --will-qos 1
# S30: paylaşımlı abonelik (MQTT 5). Farklı -i ile iki terminalde çalıştırın
mosquitto_sub -h broker.connectmq.com -p 1883 -V mqttv5 -i iq-w1-5c9d \
-t '$share/workers/connectmq/demo/5c9d/jobs' -v
Üzerinden geçmeniz için bir pratik kontrol listesi:
- QoS 0, 1 ve 2 ile yayın yapın ve paket akışını
-d(hata ayıklama çıktısı) ile izleyin. - Bir retained message oluşturun, abone olun, ardından temizleyin.
- Bir client'ı aniden öldürerek bir Last Will tetikleyin.
- Tek bir client ID'yi iki terminalde kullanın ve bağlantı kopma döngüsünü gözlemleyin.
- İki çalışanla bir paylaşımlı abonelik deneyin ve her mesajı hangisinin aldığını sayın.
Hâlâ bulanık gelen her şey için MQTT eğitimini gözden geçirin.
Kendi ConnectMQ Broker'ınızda Pratik Yapın
Mülakatçılar gerçek bir kurulum çalıştırmış adayları sever. Ücretsiz bir Serverless broker için app.connectmq.com adresinden kaydolun (kredi kartı gerekmez), oluşturulan kimlik bilgileriyle TLS üzerinden bağlanın ve oturumların, retained message'ların ve Will'lerin tam olarak nasıl davrandığını göstermek için ConnectMQ'nun tarayıcı içi client'ını ve canlı topic gezginini kullanın. ConnectMQ MQTT 3.1.1 ve 5.0'ı destekler; böylece her iki sürümü de gösterebilirsiniz.
Sık Sorulan Sorular
Mülakatlarda en çok hangi MQTT konuları sorulur?
QoS seviyeleri, kalıcı oturumlar, retained message'lar, Last Will ve topic tasarımı neredeyse her mülakatta sorulur. MQTT 5 özellikleri ve güvenlik kıdemli pozisyonlarda yaygındır.
Bir mülakat için MQTT 5'i bilmem gerekir mi?
Yeni IoT projeleri için evet, en azından temellerini: reason code'lar, oturum süresi, paylaşımlı abonelikler ve user properties.
Pratik bir MQTT görevine nasıl hazırlanmalıyım?
Bir client kütüphanesinde (Python paho-mqtt veya MQTT.js) ve Mosquitto CLI araçlarında rahat olun ve kimlik bilgileriyle TLS üzerinden bağlanabilin.
Mülakatçıya sorulabilecek iyi bir soru nedir?
Hangi broker'ı ve MQTT sürümünü kullandıklarını, cihaz kimliğini nasıl yönettiklerini ve bağlantı durumunu nasıl izlediklerini sorun. Bu, operasyonel farkındalığınızı gösterir.



