Pergunta de entrevista da empresa Meta

Print Tree nodes level by level

Respostas da entrevista

Sigiloso

1 de fev. de 2018

class Node{ var value:T var left:Node? var right:Node? init(value:T) { self.value = value } } func treeLevels(node:Node, f:(T)->()){ var queue = [Node]() queue.append(node) while !queue.isEmpty{ let n = queue.removeFirst() f(n.value) if let left = n.left{ queue.append(left) } if let right = n.right{ queue.append(right) } } } var root = Node(value: 1) root.left = Node(value: 2) root.right = Node(value: 3) root.right?.left = Node(value: 4) root.right?.right = Node(value: 5) treeLevels(node: root, f: {print($0)})

Sigiloso

11 de abr. de 2018

class Node { var left : Node? var right : Node? let value : T init(newValue: T) { value = newValue } func depth() -> Int { // recursive var leftDepth = 0 var rightDepth = 0 if let left = left { leftDepth = 1 + left.depth() } if let right = right { rightDepth = 1 + right.depth() } return max(rightDepth, leftDepth) } func depthNonRecursively() -> Int { // Non Recursive var depth = -1 var arrNodes : Array = [self] while arrNodes.count > 0 { depth += 1 var newNodes : Array = [] for node in arrNodes { if let rightNode = node.right { newNodes.append(rightNode) } if let leftNode = node.left { newNodes.append(leftNode) } } arrNodes = newNodes } return depth } } let node1 = Node(newValue: 2) let node1Left = Node(newValue: 2) node1.left = node1Left node1Left.right = Node(newValue: 4) let node1depth = node1.depthNonRecursively()

Sigiloso

24 de jan. de 2021

Through questions like this, interviewers are mostly trying to test your skillset (and its relevance to the role) as robustly as possible, so be prepared for multiple offshoots and followups. It could be a useful exercise to do mocks with friends or colleagues in Facebook to get a real sense of what the interview is actually like. Alternatively Prepfully has a ton of Facebook IOS Developer experts who provide mock interviews for a pretty reasonable amount. prepfully.com/practice-interviews