Experience SWE Questions

Réussis tes devoirs et examens dès maintenant avec Quizwiz!

What motivates you during complex projects? How do you make yourself a better software developer?

set deadlines - have a sense of progress. (I will complete one module of my online JavaScript course by Friday every week I will finish two projects by the end of the month) Spice it up - I've found it helpful to vary how I study the material. (YouTube videos and podcasts stack overflow, articles, written documentation, books) Identify the end goal - Finally, learn with a clear goal in mind, and use this goal to remind yourself why you're learning.

What is your familiarity building web-based and client/server applications, preferably with the Microsoft .NET Framework?

ASP.NET MVC or ASP.NET Core MVC? I have coded a small asp.net core app that pulls data from a database, and displays the results on the page.

How do you take feedback?

Appreciate feedback- Constructive criticism especially- Helps to fix unseen problems What have been your key responsibilities as a web designer?

Experience with project management skills? When was a time you had to take lead on a project? Tell me a time you showed initiative when working on a software engineering project. Tell me about a time you expressed leadership?

At my previous company ODU, I was paired with another assistant developer and it was my responsibility to proof code. It was a difficult thing for me to do because he had more experience and followed a meticulous process. One thing I always look for is readability and after many hours I found an area where we could simplify. We talked about it and were able to find the best approach. I excel at working with others and find that the best work comes when there are many people who can contribute and lend their expertise.

How do you measure success for yourself technically?

Cycle time - measure of the time it takes for a bug, feature, or task to move from one status to another. measure of total work output - including the number of features, tasks, bugs, or chores completed that are ready to test and ship measured over a discrete period (like a week or a month) and tracked over time so you can see that your team is working consistently. Measuring success for tech products is complex - not because it is impossible, but because there are so many different approaches tailored to different scenarios and audiences. The key is to choose a mission, and let that mission drive the product's strategic and tactical success metrics.Let's assume that we are talking about a product like LinkedIn groups.LinkedIn's mission can be thought of as driving engagement between and among employers and workers to ensure as many matches as possible, which leads to a growing and dynamic economy and workplace.To that end, the success of LinkedIn groups can be strategically measured in terms of:The number of groups and their growth rate Quality of engagement, which are things like how long people stay in groups and how often they return.More tactically, I'd look at things such as:The number of members per group and their growth rate The number of posts on things like jobs, shares, and invites And finally, I'd also look for things like if people who get jobs through the Groups feature are coming back to post jobs, and if they are referring their friends to those groups.The purpose of these groups is to grow engagement and employment and then have that growth flow back to the groups themselves.As I build technical features, I would look to see how my architectures and features drive such numbers and innovate accordingly.

Tell me about your preferred programming languages.

Different tasks require different tools. I have the most experience with Java using Eclipse and Netbeans. That's what I used for all of my courses and both my course and my personal android app projects. However during my senior year I took a web science class to get a formal learning experience with Python rather than just a self learning. I was super surprised with how felxible and versatile it was compared to Java and it quickly became my favorite language for certain things like web scrapping scripts, and I used it for my dev role at ODU for web apps. I love Python but I wouldn't want to write an application on the scale of the Java applications I work on. There's also loads of languages that are more fun to write but aren't a good career choice. In Java I always used indentation in addition to the braces bc if I didn't my code would be harder to read. So python never introduced indentation to me it just turned a best practice into a requirment.

If you were stuck in solving a technical problem, how would you ask for help?

Engineering work can be very context-sensitive but still have a high impact. That is, I may have a unique understanding of something I am building, like a system architecture or code. Still, it could impact others if I am stuck or get things wrong.In that event, if I am stuck, who and when I ask for help depends on how time-sensitive the task is, where I am in the project life-cycle, and whether I have exhausted all the tools available to me.Let's assume that I am stuck in system architecture. I'd make sure I have a well-thought-out diagram and come prepared with options and specific questions. If it is code, then it gets tricker since it is hard to debug someone else's code. In that case, I'd want to isolate the specific area that is incorrect, present the expected and demonstrated behaviors, and seek out debugging tips.Once I am unblocked, I would document my decisions and outcomes so as to create a living resource for anyone else who has the same issues down the line.

In your opinion, what are some principles every software engineer should follow?

Every programmer worth his or her salt should know: How to set breakpoints and use your debugger Version control, including branching and merging Dependency injection / inversion of control Automated tests Automated builds and deploys Let's not forget soft skills. Every programmer should be able to: Write short, concise emails Write clear, meaningful documentation Give constructive criticism without making it personal Be friendly and courteous to everyone no matter their race, religion, sex, sexual orientation, gender identity, nationality, disability, political affiliation, or other differences.

How do you ensure an application is bug-free? Testing Troubleshooting experience

First I ensure code runs by removing syntax errors. Then I make a set of expected results which is an input set and for each input the expected output. Then I start the testing process which consists of Unit Testing which is validating each piece of the program and testing each function seperatly. Also regression testing which adds tests for bugs as you find them and to catch reinintroduced errors that were previously fixed. Then integration testing which is does the overall program work. I make automated JUnit tests. First I make an object to represent the basic concept, the TestCase. print statements, debugger expressions, test scripts. Found discussing the design in terms of patterns to be invaluable, both as we were developing the framework and as we try to explain it to others. You are now in a perfect position to judge whether describing a framework with patterns is effective. If you liked the discussion above, try the same style of presentation for your own system. As soon as we had the base unit testing functionality implemented, we applied it ourselves. A TestTest verifies that the framework reports the correct results for errors, successes, and failures. We found this invaluable as we continued to evolve the design of the framework. We found that the most challenging application of JUnit was testing its own behavior.

What is your experience with web based deployment and database integration

For my personal portfolio I automatically Deploy from GitHub Using AWS CodeDeploy. I created a continuous delivery pipeline with AWS CodePipeline and then deploying with AWS CodeDeploy. Once your application files are in GitHub, you can configure CodeDeploy to pull the application bundle directly from the GitHub repository, rather than from Amazon S3. step through the OAuth process.

What was the development process of one of your previous projects?

Getting to know the team and to assign a role for everyones speciality. decide on a software architecture pattern Then idea validation and estimation - Event-driven An asynchronous pattern that puts agility first when triggering real-time events for software components to work. validate assumptions, hypotheses, and guesses to seek answers for real product demand. decide on a software architecture pattern Requirements and feasibility analysis - check whether your project is feasible in terms of resources and the tech stack analyzes the infrastructure you're going for, your team capabilities, software type, and technology in between. Its results show you if any technical improvements are necessary to achieve the best outcome. Prototype - Basic features your product can't do without. Performance features that make your product different. Design - User personas eet the people they're designing your product for. Wireframes and mockups simplified design can give you a rough idea of button placements, navigation, page depth, and more. Usability testing - heck user behaviors in real-life product interaction scenarios Make sure your design decisions were right or need to be reconsidered Assess the visual appeal of your design Detect flaws and design elements associated with user dissatisfaction Development - Gantt chart. When it comes to planning tasks, a Gantt chart gives you a deadline-based overview of everything that will be done. It shows activities and how long it takes to accomplish each of them, bringing you up to speed on the project completion status. User stories. Written by a BA, user stories move away from complex development stuff in favor of brief, easy-to-understand descriptions of how your product will be used. They put your target audience first and provide a reference for building functionality that helps fulfill their needs. Testing

What is your experience with web services and APIs?

I I used was Google Maps Android API to integrate google maps in the last android app prototype I built which was a fitness app. I wanted to add GPS functionality to track the Geolocation to track walks. To use it I install Google Play Services SDK in Android Studio. I created a Google Maps activity in the IDE which generated a class MapsActivity.java which had instructions in the comments to generate a Google Maps API key to access Google Maps servers. Then I created a project in Google console and created an API key to call the API. After the key was generated I went back to Android Studio and pasted the key into the xml file.

Which life cycle models have you used, and which do you prefer?

I am familiar with working on course related and professional Software Development teams, including standards like code reviews, testing, QA. I am familiar with Agile and it's values and principles. Every team I've worked with that claims to be agile implements it a little differently. Based on my experience, is that I am quite familiar with working as part of a team across various kinds of methodologies. terative approach, where there is a vision and architectural design, but not everything is laid at first. Team operate in iterations called sprints and the goal is to have a working piece of software at the end of each sprint. Maybe it's a small piece but it's fully functional. I've used issue tracking software like Jira and Redmine and Github.

What is a recent technical challenge you experienced and how did you solve it?

I installed a cached plug-in to lower latency on a website running a CMS (Drupal). It worked but not as well as I had hoped for as it runs on Apache. To make it work better, I used the mod_rewrite module to define the rewrite condition so that I could run the caching plug-in through the .htaccess file. In doing so, I was able to bypass PHP and the Expiry directive and get the full speed of the plug-in.

Weakness

I tend to spend too much time on some tasks and not leave enough for others, so I created a calendar where I can block out when I'll work on which project. I set timers to go off in the middle and end of each block so that I know when I need to start wrapping it up." "If I need to, I can always go back and spend more time on something, but this way I don't miss any smaller tasks that needed to get done that day."

Tell me about your Experience working with APIs

I used Google Maps Android API to integrate google maps in the last android app prototype I built which was a fitness app. I wanted to add GPS functionality to track the Geolocation to track walks. To use it I install Google Play Services SDK in Android Studio. I created a Google Maps activity in the IDE which generated a class MapsActivity.java which had instructions in the comments to generate a Google Maps API key to access Google Maps servers. Then I created a project in Google console and created an API key to call the API. After the key was generated I went back to Android Studio and pasted the key into the xml file.

What do you know about the company?

I want to be in a place where my work has an impact on millions of users. I think Doma is has a bright future and I want to expand my skills in that direction. I think you guys are forward-thinking for using workflow automation, artificial intelligence, and intuitive cloud tools.My impression is you run a good software development process and I think that helps foster a good work culture.I admire some of the charitable initiatives you've taken such as the DOMA Gives program

Where do you see yourself in five years?

I want to spend my first few years really learning software engineering skills and reassess to see what i should focus on next. I want to be working on a web app that has millions of daily users and I want to graduate from being junior

How do you deal with unexpected changes to deadlines? Tell me about a time you were under a lot of pressure. How did you handle it?

Identify what's taking more time than anticipated, and either resolve them for the future or start accounting for them in estimates. If you're spending a lot of time with a constantly changing product/design/eng spec, then you need to make sure you have a discussion with all parties involved so that everyone is aligned before moving forward. Make sure everything is documented and that there's a single source of truth that all parties can refer to. Don't start coding until your final architecture is planned, and everyone is onboard. Thrash will slow down your project significantly. Second, pushing back on deadlines often isn't the problem (managers can work a later deadline into their plans, or they can go back to PMs/design and try to reduce features/scope where necessary). It's failing to meet deadlines that's the problem, since plans/promises/expectations have been made that revolve around them, and missing them can have a cascading effect on other deadlines. There's also occasionally marketing/partner promises that are made, and missing deadlines can have very real consequences on the business. Basically, be as accurate as possible with estimating the scope/effort of a project, and allow padding for unforeseen complications. If you have some unknowns, state that you need time to do some exploration first before committing to a deadline.

What is your familiar with building web-based and client/server applications?

In my previous position as a web developer at odu I was a front end developer and was tasked with re-designing and developing different features for the distance learning webpages. I used php html css javascript and a little python. The purpose of one of the webpages was to make sure all distance learning students could identify upcoming online courses to help plan their schedules. I began by researching other similar responsive datatable systems to figure out what worked and what didn't. Next, I developed the backend in Python and made a python scraper for Banner, which is ODU's course catalog and registration system. It parses data from both the catalog and the schedule into Python objects, which can then be serialized to XML or JSON with the provided convenience functions. I used html, javascript and css to style the responsive datatables for the front end. After testing the simplified program, I added elements to make it more engaging to students, such as table sorting options and a responsive mobile navigation menu. This program was well-received by the students of ODU, and their student service success rates increased by 25% after distance learning students took feedback surveys

maven

Maven combines build management with configuration management. t attempts to standardize the build process in a way that improves consistency from project to project and enforces local best practices.The combination of easy importation of libraries into a build, and large, well-known repositories of available libraries. Maven is usually extended by adding plugins. Plugin Example - JFlex

What is the most helpful feedback you've ever gotten about yourself?

My capstone project mentor told me that although I meet expectations, I need to be more patient with my peers when they ask me for something even if I'm swamped and tied up with something else at that moment.

What is your greatest accomplishment?

My documentation skills. I have become so good at documenting things, explaining things, and thus remembering things because of writing them down. just like, documentation I have on how to do certain things, how to set up a development environment, planning of new features, task details, etc. Also - Not really a completed project/problem/task, but an ongoing one: learning to learn. When I was younger, I was awful at picking up things if I didn't have a great interest in them. Now, I'm just so used to having to learn new things that it's become almost second nature. I've been able to apply it to all manner of subjects, too.

What is an example of a time you have learnt on the job?

When I was assisting with the development and maintenance of ODU's distance learning department's web application development in my last job: Learned a lot about SQL/databases, SVN, Agile Development, working in a team, Mobile Application Development, and RESTful services.

Tell me about a time you were new to a situation or environment. How did you adapt?

My last position was my first time working as a developer in a real workplace setting. I adapted by getting their hands dirty right away. I learned by joining existing initiatives, shadowing developer leads and completing tasks that enable me to learn the stack and forge relationships. For example they used Adobe DreamWeaver for prototyping the webpages. I have never used that before so after I spent a lot of extra time each day messing around with the features and getting used to navigating and using the tool.

What are your strengths?

My strengths are my technical knowledge, and ability and eagerness to translate and break down technical terms and information to information that can be understood by the average person. Also I am a fast learner because of my course load of constantly learning new languages and new algorithms by short due dates along with my experience working as an IT specialist with constantly keeping up with new software, hardware, new operating systems and producers.

Tell me about a time you made a mistake?

One time on my capstone project team, I force pushed to a master branch when my local branch wasn't updated, and basically, I removed 75ish commits/features from production. Luckily one of my teammates pushed soon after and put back the commits, so nobody found out and it was just a teammate that was helping me through the situation that knew. I learned a lot about version control from that small error I learned the The whole point of source control is that every change is tracked; I didn't delete anything. I also disabled force pushed on github after that

How do you stay up-to-date on your software engineering skills? The field of software development is always changing. How do you go about staying on top of it?

Read O-Reilly books. GitHub explore, work on side projects like my android apps, reading Communications of the ACM. Udemy courses- Random Google searches- CSS Tricks- Stack Overflow- MDNHow do you take feedback?- Appreciate

When is a time you encountered a difficult software development problem? How did you solve the problem?

The hardest project I worked on was when I was on a team of two we had to make a program that is expected to take in 2 text files, and look for similarities between the 2 of them. The present goal of this project is to detect the degree of absolute matching between the 2 text files. I worked on it in Java and Eclipse. The scanner class created with jfflex which is a JFlex is a lexical analyzer generator (also known as scanner generator) for Java. The class takes in a file and parses it out, I needed files to be passed in order to parse the source code file and populate the tokens parsed to the suffix tree data structure in order to score them. I need had trouble finishing the scoretest junit test first and push that out before the classes. The two libraries I have used were the two my professor mentioned in the design notes, the java cup library and the jflex library. I am able to parse the files and scan them to get tokens, I got stuck in the process of using the token streams obtained to be used as inputs of the shared phrase analysis with the general suffix tree.

How do you find an error in a large file with code that you cannot step through?

There are multiple ways to handle such situation depending on the circumstances. Using bunch of printf()s is one of simplest, but time consuming method. You can start adding assertions, hoping it'll help you figure the problem out. Alternative is copying functions into some unit test environment and scrutiny each function in separation, most likely in IDE were debugging is possible.

What would you do if asked to take on a problem where you did not have the technical skills?

Unless there is an explicit set of constraints, I will assume that the task at hand is to implement a web-based capability. And the skill gap in question is that of language—more specifically, the language used in the company being one I am not terribly conversant in.Does this assumption work as a starting point before I dive in?I would examine the difference in the two languages; the scope of the project; the timelines; how much old code I could build on; and whether the work rests solely on me or whether I can tag-team with others.Based on all my findings, I would create a technical spec and system design that would contain assumptions and call out technical decisions. I would have a peer or senior leader validate my assumptions just in case my technical gaps have led me astray.As I move forward, I'd check in every week or two to make sure I am executing as expected and then become more independent. I'd be sure to align with experts in the new language so as to build my knowledge and expertise in the context of the intended outcome.Throughout the process, I would focus on the end result and what skills would take me—and the work itself—toward that end goal. That way, I will grow my skills in a way that maximises my impact as well as collective success. That will enable me to leverage available resources in the team as well to close my gap.

Something you learned

Used github for three years, sometimes every day for a month. Just yesterday someone told me that you can tag things and add releases

Tell me about a time you had multiple responsibilities to manage. How did you respond to this situation?

When I was juggling my senior year of computer science courses while working part time as a developer for ODU. I had to manage completing multiple programming assignments while also completing tasks and feature for my job. To help this I didn't commit to an aggressive schedule. I Always left some room for unexpected tasks. I broke up work into manageable tasks that you can have a good estimate for (a day or less of work is a pretty good task size). That way I knew when you can switch to a different task without leaving your current task half done. Nothing is worse than coming back to a previous task and having to recall what it was that you were doing and where you left off.

Outline your process completing a programming task from assignment to delivery. Walk me through your process for completing a project.

When completing a programming task, I first like to understand the project in its entirety. I take into consideration the time frame, the cost and the end user's desires to ensure I'm including business strategic objectives in my plan. After I've collected all the requirements, I use these in my design and frequently revisit the goal of the assignment to make sure I'm on track. Development and coding are undoubtedly important, but ultimately worthless if I've rushed integration and testing. During this phase, I think it's important to revisit the goals I set out when I started the assignment. Once I've fully implemented and delivered the program, I stay alert to any necessary bug fixes or additional features that need to be deployed. I'm constantly learning and adjusting my process to meet the needs of my specific assignments.

What is your experience with working as part of a development team using a shared source repository

Worked on a two semester long project for my senior capstone project developing an android app. We used gitlab to work independently through branching and merging, reverting changes to code that have caused defects or performance degradation and facilitating code reviews via pull requests. We could work independently on the same code base without causing disruption.

Tell us a bit about the latest project you worked on. Was it completed successfully? Explain how you contributed to its success and how you handled any obstacles you may have run into.

Yes, it was an Android app called MoodEX. It was me and two fellow cs students we wanted to make an app that will shows how the correlation between the user's wellness choices and their mood. We used Android Studio as the IDE, used Java, XML and firebase for the database. Since it was a small team I was a full stack developer so I implented both Backend and UI Interface features. Specifically: Mood logging interface Water logging interface Calorie input interface Splash, login and registration screens. Set up authentication Firebase database and SQLite database Things I learned: Make use of logcat for debugging Look at documentation for the APIs using Google Maps Make user of neat open source libraries that add a lot of value to apps Libraries such as pie chart and floating action button Make sure you have a physical test device because the emulator doesn't have the physical sensors needed (i.e. for step tracking) Get started early and do not procrastinate every feature takes way longer than expected to complete Get design and layout inspiration from other popular applications on the market Usual they have intuitie, clean layouts that you can recreate

Tell me about yourself. What is your experience working as a web designer/php/sql related to this position?

have a bachelors in computer science degree from ODU and I currently work as an IT Specialist at Ferguson. Prior to working at Ferguson I worked as a web developer and systems admin at ODU. My prior experience at ODU and my current experience at Ferguson has made me specialized in end-user technology in large enterprise industries. I'm experienced and skilled in PHP, SQL, C++/Java/Python, JavaScript, HTML, CSS, Quantitative Research, and Unix. My favorite languages to develop in are scripting in JavaScript, HTML, CSS, and PHP. But I also have 5 years of working knowledge coding in object-oriented languages like Java, and C++, and Python. In my past time I design and develop JavaScript and html5 browser games mostly using the Phaser Framework. I've published several under my personal ODU CS directory which I made into my portfolio website. My experience in PHP is part job related, part course and part independent development. i. Work: My prior position as an Assistant Web Dev and Systems admin I Assisted with improving development processes by documenting technical standards/SOPs for system operation and expansion which reduced IT's workforce-hours, allowing to better service target demographicsii. I Programmed and developed web and server base applications in both the design and dynamic functionalities using HTML, PHP, Java Script, CSS, Python, SQL, APIs, cloud resources such as AWS, Kaltura, Cisco, WebEx and Zoomiii. I also Interacted with internal and external venders in pursuit of bettering the existing systems as well as attended technology conferences to stay on top of the new trends and technologiesiv. Course and personal:In my senior programming elective, we had several assignments using PHP.2. The semester course project was completing a functional, fictional organization website. The website had to provide passive content as well as forms of functionality active content.3. The static webpages were written in HTML with a standard header including a navigation bar and footer for all pages. The different pages included a page with a grid calendar, a welcome page, about page, presidents message page, and success stories page, and a user registration form as well as an event form with several input types such as radio button, text-areas, multiple selection, drop down, input boxes, and submit button. There was a dual password field which I validated using JavaScript before the form was submitted.4. For the PHP portion, I constructed two php files which were a registration form and event form. The php files handled the form submissions and validate each input field using regex patterns and should return appropriate error messages if any are found. If no errors are found the forms append the data to a text file and return a message to confirm the transaction were successful.5. I also built a database in SQL to contain records for registration and authentication and event records for displaying events. I also had php scripts to insert a user record into the database, instead of writing it into a file and the user record contained a password hash created by PHP. I also made a login php file that provided a form for users to login and validation for the inputs.ii. Home study1. I have created my own website using my cs directory on the cs department apache server. I have designed and coded several browser games in javascrit, php, html, and css. Most of them use the Phaser framework which is an HTML5 2D game framework. Besides my games, my website contains different pages such as personal and professional related info about me

Software management tools?

used Gantt chart on capstone project - Redmine issue tracker - git commit issue tracker


Ensembles d'études connexes

Ch. 10-12 Urinary System, Spleen, Retroperitoneum

View Set

2.1: Deterministic Finite Automata

View Set

Saunders Mental Health Questions

View Set

Geology Chapter 14: Energy Resources - Fossil Fuels

View Set

Intermediate Micro Econ Test 3 Study Guide

View Set