I have updated GIFDroid to 1.2.1 to combat some bugs that cropped up recently. You can download the new update here:
The weekend of the 12th I was flown out to Seattle for a second round interview with Microsoft. I found out a few days prior that I would be interviewing for a SDET position in the Microsoft Office division. I was a little less enthusiastic after hearing about that but it was still an opportunity with Microsoft which is pretty awesome. They treat their potential interns really well, paying for the travel along with accommodations at a local hotel near campus. The day before the interview (11th) they had a small reception with some Microsoft employees and potential interns so that we would be able to ask questions. It was hosted at a really cool private bowling alley and there was plenty of free drinks and food. After arriving at my hotel at 7pm after starting the day at 6am I was pretty tired, so I only spent around an hour at the reception before heading off to bed. They told us our schedule for the next day and wished us luck.
The next afternoon I arrived on the Microsoft campus with the other interns who were also interviewing for a SDET position in Office (We were told we were not competing against each other, and that all or none of us could potentially be hired). There main "recruitment building" was really cool as it was a big reception area with a bunch of food, computers, and xbox's. I think there is a video on YouTube that showcases the whole thing. After around a half an hour of waiting, the first round of interviewers came and picked us up. I would have 4 total that day.
Microsoft interviews for SDET revolve around asking a coding question that you must write up in front of the interviewer on a white board. After you complete your problem you are then usually asked if there are any more efficient ways in doing the problem. After the coding problem you are then asked to provide test cases for your program. After the coding portion there is then a test specific problem. The different interviewers talk to each other in between interviews so they attempt to tailor each interview based on what did and did not happen in the previous one. Below are the questions each one asked (as much as I can remember) and the various solutions I provided along with some the interviewers suggested. I add a little bit of commentary based on my experience and anyone is welcome to comment with an alternate solution.
Interview 1 (Interviewer worked on Sharepoint):
Question: Find the largest consecutive sum of integers in an array.
Answer: This being my first interview of the day, I was pretty nervous despite the question being relatively simple. The solution I settled on was just to find all the possible consecutive sums and return the largest of those sums. I knew my answer was not as efficient as the interviewer wanted but it is always good to write something down. After talking it over we discussed a better alternate solution, to sum consecutive positive and negative numbers together into one sum in order to save time when iterating through the array.
The rest of the questions involved testing a web based calculator along with testing the program I had written above. The interviewer was very helpful as I had little testing experience and he provided me with a list of 6-8 different categories of testing that need to be considered which helped in my subsequent interviews.
Interview 2 (Interview worked on Office Graphics):
Question: Find the odd occurrence of a number in the array (Only one odd occurrence ).
Answer: Another array of number problems. I struggled with this one and came up with a pretty slow solution until I realized I could just sort the numbers which made the question a lot easier. Applying quicksort to the array and then iterating through it once is all you need to do.
Question: Reverse the words in a string ("QuackWare is cool" will become "cool is QuackWare")
Answer: This one was relatively straight forward as I had seen this problem before and practiced for it. All I did was reverse the entire string ("looc si eraWkcauQ") and then reversed each individual word. I ran into a little bit of trouble with splitting the words up but ended up getting a solution.
The rest of the interview involved testing the "Merge and Center" feature of Excel along with testing the two programs I had written.
Interview 3 (Interviewer worked on Office 365):
Question: Find a way to compare an old string id such as "ID_TITLE_TEXT" to a new string id with a dynamic section "C_12_32_6$ID_TITLE_TEXT" (The separate's could either be underscores or dollar signs).
Answer: This is the one I struggled on the most due to the question actually being an entire page long and involving a lot of ASP.NET information and other unnecessary stuff that hid the fact that it was just a simple string comparison question. After fumbling around with a really, really bad solution I decided just to write my own tokenizer and do a string comparison between the two different string arrays that I returned (Making sure everything was in the same order).
The rest of the interview revolved around testing the program I wrote above, in which case I struggled because it was a little more complicated the the other programs I wrote and I felt as if I was repeating a lot of different test cases and generally just repeating stuff to much. We also tested the Bing webpage, focusing on the different categories of testing that my first interviewer introduced to me.
Interview 4: (Interviewer worked on Excel)
Question: Find the largest product of 3 integers in an array.
Answer: My solution revolved around using 5 temporary variables to store the largest positive and smallest negative numbers which were then multiplied together (Based on the values of each of them) to get the solution. The problem is made much easier but runs slower if a sort is performed on the array before hand. I ran into a few problems with special cases such as 0 and other test cases that revealed flaws in my program.
The rest of the interview involved testing an (x,y) plane by drawing lines, at one point visualizing like a air traffic control program. In addition I was asked to solve a basic logic problem with numbers.
About an hour after the last interview we found out our results. In the end I did not get the position which is unfortunate although MS Office is not the most interesting product to work on along with not interviewing for a developer position. I felt that I really broke down in the 3rd interview due to the fact that I struggled a lot with the problem despite solving it in the end. Also the 4th interview I ran into to many problems with my code and required to many "hints" from the interviewer. Company policy does not allow interviewers to share specific faults that I had, although I have a good idea and the recruiter gave me a general idea of what I needed to improve. My white board programming skills left some things to be desired along with my minimal testing experience.
Hopefully this helps out anyone interested in interviewing with Microsoft. If you are lucky enough to reach the 2nd interview, they treat you great and take you through one hell of a ride. I'll probably apply again next year when I am looking for a full time job after graduating. I will make sure this time to show my interest in SDE rather then SDET along with hopefully being placed into a more interesting position such as Windows Phone or even the Windows OS division.
Leave a comment if you have any questions or want me to elaborate on anything. I won't really post the solutions to the problems since you can probably just Google them and I am sure my solutions are not the ideal ones.
market.android.com GIFDroid is a free video to GIF converter. Record a video or select a video from the gallery and easily choose a video interval and individual frames. Features: - Convert videos on the fly or select previously created videos. - Choose specific video intervals - Adjust preferences such as frames per second, frame delay, and GIF dimensions. - Choose specific frames to create a perfect GIF - Built in sharing features to show your GIF to everyone! Created by QuackWare www.Quack-Ware.com
Hello all, I am happy to announce that my second android app has been released to the Android market. It's in beta so any help in reviewing it would be awesome! Here is the link:
And here are the details:
GIFDroid is a free video to GIF converter. Record a video or select a video from the gallery and easily choose a video interval and individual frames.
- Convert videos on the fly or select previously created videos.
- Choose specific video intervals
- Adjust preferences such as frames per second, frame delay, and GIF dimensions.
- Choose specific frames to create a perfect GIF
- Built in sharing features to show your GIF to everyone!
In this tutorial I show you how to solve common interview questions. In this specific video I go over the simple interview question of reversing a string and talk about what might happen if the interviewer asks a more difficult problem afterwards. WEBSITE: www.Quack-Ware.com
In this tutorial I show you how to solve common interview questions. In this specific video I go over the problem of checking whether a number is prime or not. I also talk about the importance of efficiency in interview questions. WEBSITE: www.Quack-Ware.com
In this tutorial I show you how to solve common interview questions. In this specific video we go over the "Clock Angle Problem" where you are given a time and you have the find the angle in between the two hands. WEBSITE: www.Quack-Ware.com
Well as I was browsing reddit I came across this thread which links to an xda-developers post giving a download link to an apk on how to install Google Wallet on a stock Samsung Galaxy Nexus Device. Right now the Google Wallet application is listed as incompatible in the Android Marketplace for my new Galaxy Nexus but using this method I was able to get it working (Installed correctly both on Wifi and 3G).I will give you my experience and instructions on how to install below.
1) Enable installing of apps from Unknown Sources (In the security section of settings)
2) Install some sort of app that enables you to install 3rd party apps on your phone (Not sure if this is needed, I used Astro File Manager for this task).
3) Download the .apk file to your phone here: http://www.megaupload.com/?d=GQ6YS0KM
4) Install the .apk file using whatever method you want.
5) Enjoy your Google Wallet and free $10
Note: I ran into a few problems (Google wallet has stopped error) which I simply fixed by force closing Google Wallet and then clearing the cache. Interestingly when I did this I had to "re-activate" my google account even though it was already activated with Google Wallet and I received another confirmation email. This is most likely some sort of bug.
After further testing, I uninstalled the Google Wallet .apk and reinstalled it. I also ended up having to get another $10 Google pre-paid card. I am not sure if this is a bug or if you spend your $10 and uninstall and reinstall you will have another $10. I have yet to actually purchase anything using the app but from reading other user responses I assume it works correctly.
Thought I would write about the recent pain I experienced in trying to get FFMpeg into Android and subsequently grab a frame from a video. Hopefully this tutorial will help out a bunch of people, so anyway here we go.
The first thing you are going to want to get is JavaCV (Website here) and follow the EXACT instructions under "Quick Start for OpenCV"
If you followed the instructions you should have 2 jar files in your build path along with a large amount of .so files in your libs/armeabi folder. Now the class you are going to be looking at is called "FFMpegFrameGrabber" (Code here). Here is some sample code to give you a general idea of how to grab a frame from your video.
//Path is the path to your .3gp or whatever file on your sdcard FrameGrabber f = new FFMpegFrameGrabber(path); f.start(); IplImage _image = f.grab(); //We need to convert from 3 channels to 4 channels so that we can convert //from IplImage to Bitmap IplImage image = IplImage.create(return_image.width() ,return_image.height(),IPL_DEPTH_8U,4); //source, dest, code cvCvtColor(_image,image,CV_BGR2RGBA); int width = image.width(); int height = image.height(); Bitmap b = Bitmap.createBitmap(width,height, Config.ARGB_8888); //Make sure you use getByteBuffer()! b.copyPixelsFromBuffer(image.getByteBuffer()); //MAKE SURE YOU DO NOT CALL stop() BEFORE YOU CREATE A BITMAP FROM IMAGE f.stop();
You might see an error about cvCvtColor, in which case you need to add the following in your import statements:
import static com.googlecode.javacv.cpp.opencv_imgproc.*;
Now you can display your new bitmap in whichever way you want.
In this tutorial I show you how to use inheritance, abstract classes, and interfaces and talk about how they help your programming style. WEBSITE: www.Quack-Ware.com FREE CODE SNIPPETS http