Having the pleasure of doing a phone technical screen with a top tier institution, I was not sure what to expect. After mildly panicing when I tried to access the WebEx meeting through Linux. With it not working in either of my browsers I quickly fired up a virtual machine and prayed that they were not wanting me to use my webcam. Getting to the meeting in the knick of time, albeit a few minutes late made it where I did not have time to layout some basic html boilerplate. The interviewer asked me to share my screen and we began with a question along the lines of…
Where are your skills and what do you know?
My answer was more along my generic-default elevator pitch into what I am working on now. What he was looking for was to describe my relevant front-end skills and projects.
I have been honing my front-end skills for the last year, after working in ancillary roles such as writing documentation and doing analyst work my passion for building web applications budded organically. By doing side projects I have sharpened my skills into something more than just a passion; I have built a weather dashboard, an interactive visualization of 171 traffic cameras, and a tool to visualize scrapped Craigslist data. I know my skills are more on the junior side of things, but I learn quick and have my own unique set of information to a team.
Write a form to submit user login info
This was horrible struggling through this, I basically faked it and kept asking if I could just look it up. I almost feel like it was an obedience test. I added the script tag which then prompted him to ask…
Simple Login Page
How would you send this?
*GULP* well I would tokenize it… Blah blah blah, I have no idea what I said here.
Hashing to a base64 bota(), which can then be passed using some basic access authentication assuming there is SSL/TLS. Or there is HMAC (Hash-based message authentication code) which is more for in browser encryption. HTTP Digest is the most secure option which would ensure the users password are never transmitted over the wire, rather maintain its state on the server side.
function login() {
var username = document.getElementById(this.id + “-username”).value;
var password = document.getElementById(this.id + “-password”).value;
this.http.open(“get”, this.action, false, username, password);
this.http.send(“”);
if (http.status == 200) {
document.location = this.action;
} else {
alert(“Incorrect username and/or password.”);
}
return false;
}
Center the form on the page? What is the box model?
My first response was text-center, but I knew I was not right by the way that he asked if there was any other way that I would do it. As he began asking if I was familiar with the box model, I admitted too soon that I was not familiar with it. As the diagram popped up on my hidden browser window at the same time as he was explaining what it was I let out a big “OH, that box model.”
<style>
.content{
text-align:center;
}
/</style>
What is the difference between forEach and map?
I did not have a good answer to this, I merely stated that they essentially do the same thing but in different ways that I was not presently aware of.
forEach is for performing an action on the values of an array, while map is used to produce a new aggregate value based on the values or an array.
Write a function to sum n# of values
This one I had another window open and pretty much tried to pretend like I was writing the logic for this, but it was more like I was trying to understand the logic myself. Frozen panic. Really it is just something like this.
<script type=”text/javascript”>
var values = [0, 1, 2, 3];
var total= values.reduce(function(a, b) {
return a + b;
});
console.log(total);
</script>
Stringify an object by hand
At first I just did JSON.stringify, but he wanted that by hand.
As I choked through the logic being copied from the other screen I was super disappointed when he was like, ”oh that is just gonna show the attributes, I want the values.” As I checked the time, I leveled with him and said I would need to see the code running to better troubleshoot it.
Not sure if I was supposed to just print the values from the beginning or if I was supposed to build a lexical analyzer to convert the object into a string by hand. Below is my attempt at all three.
<script type=”text/javascript”>
var values = {“A”: 1, “B”: 2};
var total= JSON.stringify(values);
console.log(total);//the results of this should match the results below
//print just the values
for (var key in values) {
if (values.hasOwnProperty(key)) {
console.log(values[key]);
}
};
console.log(values);//I don’t know how to build a lexical analyzer in JavaScript
</script>
Overall this was a great learning experience / wake up call that I need to be more heavily immersing myself in code to be more fluid during technical interviews. As silly as having the ability to code a page from scratch may seem, I guess I should be able to call myself a front-end developer. My plans include working through my list of 250 software development questions. I feel like I just need someone more senior to advise as to the best practices, cause it would appear that there are multiple ways to skin a cat.