Question: Protocol design. Have they needed to design a protocol even using JSON to communicate with a server/service.
Answer: I work with an in house memory streaming and messaging protocol to send data to all a array of devices. Although I
did not own the protocol, I participated in the design and implementation and of
about quarter of the protocol's messages.
Question: Describe how they have optimization memory, network bandwidth or disk space on a product.
Answer: I optimize memory on the iOS mobile client by making sure I keep up on my analyzer warnings in xCode. Click here for a look at the tool. I do that by running them on every check-in to master and displaying it on a bigscreen in our office. The Hue lights also go blue when we have analyzer warnings.
Question: What multithreaded apps have you developed?
Answer: The WAVE Mobile Communicator is our current app and it is multithreaded. Much of the code uses Objective C's Grand Central Dispatch which runs on multiple threads, but we do have two custom threads. One is for ping timeouts over the network, and the other is for the audio circular queue player.
Question: Have you done work related to synchronization of files, pictures, videos, email, calendar, contacts...
Answer: I developed an iPad text messaging app for At&t. It synchronized paginated text messages with an Objective C Core Data database.
Question:What is the hardest problem you needed to debug.
Answer: It is hard to point to any single one since there are so many. I tend to gravitate towards the harder problems to solve, and pitch in my help. We had a hard time recently with working with Bots, but I think we had the right approach and mindset when we started. We knew that it would not be straight forward, and when we hit a wall we reacted with investigation without discouragement. If the desire of the question is to get to the answerer's weaknesses when it comes to debugging, in the past I have had problems debugging server and network problems. Luckily I had my brother asking me questions that I did not have answers for, which led me to search for their answers. I found that debugging servers are all about getting to log files. Usually some part of the system is spewing out printf "ERROR, hey Phil this element is not defined yet, stop playing ping-pong and learn how to error check your code properly!?"
Question: What's the advantage of batching commands over the wire?
Question:Have you developed code using queuing systems like RabbitMQ
Answer: I have worked "around" ActiveMQ and used it in conjunction with Groovy Grails (Java). But I do not have any serious experience with a MQ system.
Question: How do you find bottlenecks, memory leaks and crashes in their systems; especially from production code where they cannot talk directly to the customer.
Answer: A healthy CI will often inform you when crashes occur, and even if the code is in production. I am a big fan a analytics and test flight crash reporting. My teams check these crash reports regularly, and often have enough information to crush the bug and cover it with tests to make sure the bug does not come back. I try to always reproduce the bug using automated tests. Most times an end-to-end test, but sometimes it can be re-produced with an integration test. When done that way, the reproduction is started with a mouse click, and the test written will ensure the bug never returns. That is assuming your CI runs your tests regularly and would inform the developer promptly on test fail.