News for hackers. Stuff that matters.
Re:How to Interview Engineers by altharaz on Monday June 26, 2017 @03:43PM (#14639683)
At my company our engineers defined the following process.

First, we defined the skills we're looking for i.e. Programming / SysAdmin / Cybersecurity.

Our process goes as follows:

1. We ask candidates to answer a quizz by phone, with questions in the 3 chosen fields. Duration = 1h.

2. We ask candidates to solve remotely with Google Docs 5 real-world problems asking for skills in Algorithmics, Data Modeling, Object-Oriented Programming, Software Design, and Parsing. We also add a bonus question like "how many people can get into a train". Duration = 1h.

3. We have a HR meeting at our office with a non-technical member of the team. Duration = 1h.

The quizz helps us to remove of our list the candidates that do not have the technical culture we're looking for, and to see what they already have worked on.

The 5 problems helps us to see how the candidates can code, the bonus question helps us to see how they approach new issues and manage their stress.

The final HR meeting is very typical: we try to see if we would be happy to take a 6 hours long flight with the candidate.

Most candidates do not go through first step, and roughly half on them do not go through second step.

This simple process definitely helped us to reduce the time spent on hiring and to make the really good candidates shine.

Re:How to Interview Engineers by bogomipz on Monday June 26, 2017 @07:38PM (#14641345)
>"We ask candidates to answer a quizz by phone, with questions in the 3 chosen fields. Duration = 1h."

You ask trivia questions for a whole hour? That seems pretty gratuitous. I think most people would tire of that after about 15 minutes.

>"We also add a bonus question like "how many people can get into a train". Duration = 1h."

You ask Fermi questions? Between an hour of trivia questions and one "bonus" Fermi question your process sounds pretty horrible to me.

Interviewing candidates is a two way street. There are many candidates who would not want to work for a company that thought asking a candidate an hours worth of trivia questions and a bonus Fermi question was acceptable. For many this would be a red flag.

Re:How to Interview Engineers by Dzugaru on Monday June 26, 2017 @03:54PM (#14639784)
> how many people can get into a train

Can't speak for everyone, but I'd turn away and walked out the instant I hear this or similar BS (which is totally unrelated to "approaching new problems" or "stress management" in programming at least)

Re:How to Interview Engineers by supran on Monday June 26, 2017 @04:32PM (#14640110)
You're too forgiving. I turn down interviews when they list "linked lists, hashing, breadth/depth first search" on their study guide. I've never had to write a linked list EVER in my career, don't fucking bother me with that shit. Also, if the position is in a language where linked lists would be stupid (i.e. python), then I definitely reject that company.

I can explain what everyone of them is, and why you'd want to use them. But I've never written any one of them and I'm not going to spend the time to memorize something I can look up in my CLR book or stackoverflow.

It's embarrassing that tech interviewing is still stuck in a 1990s mindset.

Re:How to Interview Engineers by DonaldFisk on Monday June 26, 2017 @09:46PM (#14641967)
(Singly linked) lists have many advantages (e.g. useful operations on them are side-effect free), but whether they should be used depends upon which problems you solve and which languages you use. It's unsurprising they're used all the time in Lisp, and functional programming languages generally. I'd advise against their use in C or other languages without garbage collectors. They're rarely needed in languages (such as Python and Java) which have vectors and hash tables as basic data structures. I've never found a need for doubly linked lists in any language, for any problem.

So you'll either have them built in to the language you'll be using, the company's using the wrong language, or you'll be tackling problems where they're not really needed.

Re:How to Interview Engineers by deathanatos on Monday June 26, 2017 @10:52PM (#14642234)
What language would you recommend using a singly-linked list in, aside from Lisp? Why is it any less valid in non-GC'd languages? (Aside from memory management in C is fraught with error, but that's a problem not unique to singly-linked lists.)

I've never looked (at least, that hard) at the language; it was always a question of "is this the appropriate data structure for this task?". Linked-lists have somewhat peculiar time complexities, but occasionally those line up with what you need. (Usually a vector is also as good, time-complexity-wise, and wins out by being contiguous. But if you need O(1) removal…)

Re:How to Interview Engineers by trishume on Tuesday June 27, 2017 @12:36AM (#14642615)
Linked lists make way more sense in languages with bump-pointer allocating garbage collectors specifically. In those languages (e.g Haskell, OCaml, Java) allocation is really cheap and they preserve locality so allocating all the links isn't as much of a penalty.

Also if you don't have a garbage collector you have to do reference counting, and if you want parallelism your reference counting has to be atomic, which when you're sharing a lot of linked list nodes, is another large penalty.

Re:How to Interview Engineers by deathanatos on Tuesday June 27, 2017 @10:09PM (#14651217)
> Linked lists make way more sense in languages with bump-pointer allocating garbage collectors specifically. In those languages (e.g Haskell, OCaml, Java) allocation is really cheap and they preserve locality so allocating all the links isn't as much of a penalty.

Such allocation is possible in languages such as C++/Rust/C as well. (Though to how much the standard library in each supports you may vary.)

My point was that at least I choose linked lists for the O(1) node insertion/removals in addition to maintaining a sequence of items, a trait pretty much unique to linked lists. It's a matter of whether or not the order notation beats out any additional allocation time and cache effects (Vec/std::vector/continuous-memory lists being more friendly towards cache)

> Also if you don't have a garbage collector you have to do reference counting, and if you want parallelism your reference counting has to be atomic, which when you're sharing a lot of linked list nodes, is another large penalty.

Neither Rust nor C++'s linked list implementations require ref counting, and neither have a GC. A node is essentially,

  struct LLNode<T> {
    LLNode *next;
    LLNode *prev;  // if doubly linked
    T item;
  }
(the above is pseudo-syntax, adjust appropriately) Rust, for example, knows the linked list is only ever owned by a single person. (Barring either the list or the items being wrapped in Rc/Arc/Mutex/etc., but in that case, of course it is, but that's yet different and doesn't really impinge upon a linked list's general usefulness)
Re:How to Interview Engineers by trishume on Tuesday July 04, 2017 @04:09PM (#14697980)
Yah I know normal linked lists are totally possible in all languages. I should have specified I was talking about the use case of sharing data through immutable singly-linked lists.

In these languages you use them specifically because you can prepend without worrying about other things still holding a reference, even in other threads. In Rust you'd need Arc to do that.

Also yes you can use custom allocators in Rust/C++, but then you have to have everything have the same lifetime. With GC'd functional languages you don't because the GC will move them to the old generation if necessary.

I'm mainly talking about the empirical question of why Lisp/Haskell/OCaml use linked lists so much, but in other languages they're rare (e.g I see/use them less than heaps). In most cases where you want fast prepend you just append to a vector and just treat it as reversed or reverse it after.

Re:How to Interview Engineers by watwut on Tuesday June 27, 2017 @02:57AM (#14643023)
For me it is opposite. If the company gives reasonably sized study guide, I am cool with it. I also implemented linked list like structures (it was not linked list but similar). You don't need to memorize it to suceed, the construction is pretty logical.
Re:How to Interview Engineers by emerongi on Monday June 26, 2017 @06:15PM (#14640822)
I've written at least 5 linked lists in the past year. They're quite useful.
Re:How to Interview Engineers by Apocryphon on Monday June 26, 2017 @06:19PM (#14640847)
What were you using them for?
Re:How to Interview Engineers by mickg10 on Monday June 26, 2017 @11:51PM (#14642448)
Not sure about GP, but very recently, an open-addressing hashtable that could be traversed in both reverse modification and reverse insertion time order. There are actually some interesting subtleties when doing this for open-addressing hashtables (i.e., entries (and pointers to them) move around when the table rehashes).
Re:How to Interview Engineers by stevenwoo on Monday June 26, 2017 @06:27PM (#14640919)
Five different implementations of linked lists?
Re:How to Interview Engineers by emerongi on Monday June 26, 2017 @06:37PM (#14640998)
Yes. To be fair, this is the first time in my life I can clearly remember implementing a number of linked lists.

I'm pretty sure my lifetime total is not much greater than 5.

Re:How to Interview Engineers by kafkaesq on Monday June 26, 2017 @03:56PM (#14639819)
We ask candidates to solve remotely with Google Docs

Google Docs are horrible coding environments. In fact, anything besides the candidate's native editing environment makes for an obtuse and off-putting experience, all around. I mean, yeah, the candidate can suck it up and make it work if they felt they "had" to. But on balance it's just unnecessary mental gymnastics -- and completely avoidable source of awkwardness and all around unpleasantness in the interview experience.

Re:How to Interview Engineers by deathanatos on Monday June 26, 2017 @10:54PM (#14642242)
> In fact, anything besides the candidate's native editing environment makes for an obtuse and off-putting experience, all around.

And how would I use that, as an interviewer, in a phone screen, realistically?

(I don't believe that I could — reliably — get them into a Google Hangout, for example.)

(We used https://coderpad.io/ ; it was alright, and certainly better than Google Docs.)

Re:How to Interview Engineers by citizens on Tuesday June 27, 2017 @02:30PM (#14647943)
How did the engineers who designed that process get hired? What was wrong with the process that landed you your existing team?

Lastly...why are the engineers coming up with the hiring process anyway? Is this common in other professions?

Re:How to Interview Engineers by solidr53 on Tuesday June 27, 2017 @12:07AM (#14642503)
Are you serious?