---
# System prepended metadata

title: CommonEdge Interview with Mihajlo

---

# CommonEdge Interview with Mihajlo

### If you could program in any language, what would it be?

### Why doesn't 0.4 + 0.8 == 1.2? (in javascript, Java, PHP, C, etc.)

- Floating point is not perfectly precise.
- 1.2000000000000002

### Fix the bugs in this function to count reachable nodes in a directed graph.

```php
$node_names = array();
class Node {
    public $value;
    public $children;
    
    // count how many nodes are reachable from this node including this node
    public countNodes($seen=[]) {
        $n = 1;
        $seen[] = $this;
        foreach($this->children as $child) {
            if $child is contained in $seen then continue;
            $n += $child->countNodes($seen);
            $node_names[$child->name] = true;
        }
        return $n;
    }
}
```

### Given an array of numbers, return the second greatest number without using sort.

```php
$arr = [2, 15, 48, 78, 22, 35]
$arr = [0, 1, 1]

$max = false;
$max_pos = -1;
for ($i = 0; $i < count($arr); $i++) {
    if ($max === false && $max < $arr[$i]) {
        $max = $arr[$i];
        $max_pos = $i;
    }
}
$max2 = false;
for ($i = 0; $i < count($arr); $i++) {
    if ($i != $max_pos && $max2 === false && $max2 < $arr[$i]) {
        $max2 = $arr[$i];                         
    }

}
```

### Discuss advantages vs disadvantages of inlining vs calling out to library functions - that is, more complicated versions of

```javascript
const max = a > b ? a : b;
```

    vs.
    
```javascript
const max = Math.max(a,b);
```

    vs.
    
```javascript=
const max = ourmax(a,b);
```

### Discuss static type systems.

```typescript=
const ourmax = (x: number, y: number): number => // ...
```


```typescript=
const somemysteryfunction = <A,B>(f: (x: A) => B, xs: A[]): B[] => // ...

const calcSurface = (x: Opening): Surface => // very complicated
const panalizeSurface = (x: Surface): Panels[] => // also complicated

```