Ares.Luo.T
BAN USERTing Luo 114 Mentor Blvd, North York, ON, M2H 2N1
647-621-8870
Objective: Look for a software developer position.
SUMMARY
• Programing language: Java, C/C++, Matlab, C#, Bash, Java Script, SQL, VHDL.
• Operating system: Windows (95~Vista), Linux (Ubuntu 9~12), Mac OS (9~X).
• Nearly two year professional software developer experience.
• M.A.Sc and B.Eng degree from McMaster University.(GPA3.75/4 and 3.8/4 respectively)
• Received scholarship, and listed on Dean’s honor list during both degrees.
• Networking knowledge (TCP, UDP, FTP, IP, SNMP, DHCP, etc).
• Experience with relational database, and database related software (e.g. Hibernate)
• Experience with scripting, auto-testing, and version control software.
• Energetic, Enthusiastic, and eager to learn.
• Excellent learning ability. Always meet deadlines.
• Strong problem solving, analytical, and debugging skill. Creative.
• Able to think critically and work efficiently in a fast paced and pressured environments.
• Attention to detail. Organized, friendly, and positive.
• Team player as well as an independent developer.
• Bilingual: proficient in English and Chinese(both Mandarin and Cantonese)
EXPERIENCE
Software Developer 10/2010 - 05/2012
Xtera Communications, Inc. Texas, USA & McMaster University, Ontario, CA
Platform & languages: Matlab, Grid, Linux, Bash
Developed and sold simulation tools for optic telecom system successfully.
Programmed auto-testing software for the simulation tools.
Followed prototyping model in development process.
Provided technical support during development and maintenance stage.
Research Assistant, Teaching Assistant 09/2009 - 04/2011
McMaster University, Ontario, CA
Upgraded, modified, and tested lab simulation software which provide better accuracy, auto-testing function, and higher simulation speed (saved up to 3~5 hours per run).
Practiced my communication skill and presentation skill while teaching students with various backgrounds.
Tech Support 04/2007 - 08/2007
Guangdong Computer Center
Provided computer installation, trouble shooting, and repair.
Guided customer shopping and tailored computer solution for them.
EDUCATION
M.A.Sc. of Electrical and Computer Engineering 09/2009 - 08/2011
McMaster University, Ontario
Completed with full scholarship $19189 yearly (GPA 3.75/4.0)
Major at digital signal compensation scheme for fiber communication system
Bachelor of Electrical Engineering 09/2006 - 04/2009
McMaster University, Ontario
Completed Electrical Engineering Program ( GPA 3.8/4.0)
On Dean’s Honor List, received scholarships and bursaries ($9000 yearly)
RESEARCHES AND DESIGNS
Digital compensation for optic fiber communication system 2009 - 2012
Platform & languages: Matlab, Grid
Robot AI system that can react based on video and audio information 2008 - 2009
Tools & languages: C, C++, VHDL, Nios embedded processor, FPGA
Digital adaptive equalizer simulation 2009
Tools & languages: Matlab
Database system for bookstore and dozens other project 2008
Tools & languages: Java (Eclipse & Netbean)
Peacemaker driver and its Desktop control software 2007
Tools & languages: VHDL, C Sharp(C#)
EXTRACURRICULAR ACTIVITIES
Assistant, Guangzhou Tendering & Bidding Office 04/2009 - 08/2009
Private Tutor (Math, physics), Georges Vanier Secondary School 2006
Assembly Technician/Supplier, QA, Reliance Human Resources 2005 - 2006
let one rectangle be represented by top-left coordinate 'TL' (x1,y2) and bottom-right 'BR'(x2,y2).
the other to be 'tl'(a1,b1) and 'br'(a2,b2) respectively.
Key: we only need to make sure either br is not at the bottom-left section of TL ==OR== tl is not at the top-left section of BR.
# of comparison: following code is a all OR check, any one comparison starting from right hand side that gave 'true' will terminate the rest comparisons and directly go to print. so worst case will need 4*n comparison with average 2*n comparison needed.
code:
if ( (a2<x1||b2<y1) || (a1>x2||b1>y2) ) {NO Intersection; Print rect;}
br < TL ==OR== tl > BR
key to solve this problem:
i) do NOT use operation 2(O2) on any row that has "1" in it till all the member in that row is "1".
ii) use operation 1(O1) on any col that has "1" in it and then O2 to prevent case one from happening.
algorithm to solve it:
s1)search for the minimum value in row i, let it be a. Record all index where a occur;
s2)do O2 for (a-1) times to row i;
s3)check if any column has a value greater than "1"
true:
s4)do O1 for each column indexed in step 1(s1). go to s1
false:
s5)do O2 then move to next row(i++)
for example of a row:
s1: 4 17 11
s2: 1 14 8
s3->4: 2 14 8
s1~2: 1 13 7
s3->4: 2 13 7
s1~2: 1 12 6
s3->4: 2 12 6
.
.
.
s1~2: 1 7 1
s3->4: 2 7 2
s1~2: 1 6 1
s3->4: 2 6 2
.
.
.
s1~2: 1 2 1
s3->4: 2 2 2
s1~2: 1 1 1
s3->5: 0 0 0
there are two improvement method I can think of atm.
1. instead of doing O1 once every loop, we can do it several times if the 2nd min larger than 4. which means: instead of doing (1 17 1) -> (2 17 2) -> (1 16 1)->...->(1 2 1), we do (1 17 1)-> (16 17 16)->(1 2 1).
1st method need 16+16=32operations, while 2nd method need 4+15+1+1=21operations.
2. work multiple row at the same time, prioritize upper row. e.g. O1 operation will only used when upper row needed(sometimes it might be the same column needed by lower row).
basic method operations needed:
1. (min-1)+2*(2nd min-min)+2*(3rd min - 2nd min) + .....
2. update value changed by O1 in all previous row operation, go to 1.
3. till last row, then sum all.
it is similar function as goto, but more powerful.
- Ares.Luo.T September 09, 2012Looks like the same logic as shondik
- Ares.Luo.T September 09, 2012C++ pseudo code to illustrate the logic,O(n)runtime, O(1)memory.
string exploreString ( string A, int k ){
int decoded=0;
int length;
int index_left=0;
int index_right=get_index_of_next_integer(A,index_left);
int number=get_next_number(A,index_left);
while(number!=null){
length=index_right-index_left;
if (k<decoded+length*number) return A[index_left+((k-decoded)modnumber)];
else passed+=length*index_num;
update index_left,index_right,number to next string&number set;
}}
This code generally don't work. lots memory, function, and conversion problem.
- Ares.Luo.T September 09, 2012In C, this is a pseudo code. O(n) runtime, O(1) memory. This question would be much simpler if there is a dummy head in the linked list. Asking this question would definitely impress the interviewer.
Otherwise, with the restriction on extra node creation, you will need extra 50% energy and 50% increased complexity to deal with the first node.
public node* pair_r(node* head) throw (String); //function to reverse a pair.throw String if reach end of the list.
public node* main(node* root) { //main function to reverse a linked list
if (root.next == null) return root; //do nothing if length is 1.
root = pair_r(root); //manually reverse first pair since lack of dummy head.
node* cur = root.next; //set current pointer to the second node.
while (!end) { //loop till the end of linked list
try {cur.next = pair_r(cur.next);}//reverse
catch (String s) {break;}//end of list, odd node
if (cur.next == null) break; //end of list, even node
}
return root;
}
public node* pair_r(node* head) throw (String) {
//linked list like: 1->2->3
if (head.next == null) throw "end of linked list";
node* temp = head.next; //set temp to 2nd_node
if (temp.next != null) head.next = temp.next; //set 1st_node.next=3rd_node
else head.next = null; //set 1st_node.next=null if hit the end of linked list
temp.next = head; //set 2nd_node.next=1st_node
return temp; //return pointer to 2nd_node to connect previous node.
// linked list sorted to: 2->1->3
}
This method require O(n) extra memory which is definitely not necessary.
The code also employed a very bad memory management style.
Strongly depreciated. Thus -1
This is a log(n) algorithm.
- Ares.Luo.T September 07, 2012use Union would be the best.
- Ares.Luo.T September 07, 2012First, you will need to create a non repeat id for each row.
Then use
DELETE FROM foo WHERE id NOT IN (SELECT min(id) FROM foo GROUP BY col1,col2,...)
n represent the bit number.
Code tested in Java.
Output in String. Could use out.print to reduce memory consumption if need.
Run-time O(n*2^n) to output n*2^n char. Memory O(n) extra.
public static void run(int n) {
String gc="";//gray code output string
Boolean flip;//determine gray code reflection
int cur;//temp value to store baise
int[] index = new int[n];//reflection length, used to determine if the number of certain index took a reflection or not
for (int i = 0; i < n; i++) {//init index
index[i] = (int) Math.pow(2, i);
}
for(int i=0; i<Math.pow(2,n);i++){//output gray code one by one
flip=false; cur=0;
for (int j=n-1;j>=0;j--){
if(i>=index[j]+cur){
if(flip) gc+="0";else {gc+="1";flip=true;}
cur+=index[j];
}else{
if(flip) {gc+="1";flip=false;}else gc+="0";
}
}
gc+=" ";
}
}
Replisafergusona, Consultant at Myntra
I am Lisa from Chicago,I am working as a Show host in the New World. I also work Performs ...
RepMariaHobbs, Consultant at Adobe
Hi, I am Maria Hobbs from NewYork.Teach career development courses for designated areas. Develop, evaluate and revise course materials ...
divide the group(circle) into two district and calculate the net flow needed between two districts, and then divide each district into two smaller districts and calculate the net flow between them and also update the net flow between the lager district. Keep doing this till we reach the smallest individual and then we know what should be the flow.
- Ares.Luo.T April 10, 2013