INSERT INTO `resumes` (`id`, `profile_id`, `total_exp`, `profile_title`, `filename`, `resume`, `location`, `emp_type_id`, `visa_type_id`, `in_place`, `in_block_list`, `in_hotlist`, `created_at`, `updated_at`) VALUES
(264, 570183, 5, 'develoepr', 'uploads/resumes/2020/12/18/570183_121325_1000.pdf', '[Department]/Hagg Melanie_2020-11-13_[FileName and path] Page 1/2 Feedback Mobile Version: https://marvelapp.com/prototype/528fgha/screen/73819583 Start screen: Creat a post in Social Wall: Correct to „Social Wall“ – please write the word „Wall“ with a capital „W“ Write something here… - no changes Correct to „Create Post“ – please write the word „Post“ with a capital „P“ [Department]/Hagg Melanie_2020-11-13_[FileName and path] Page 2/2 Chat: Employee Self Service: Canteen Menu Change the writing form from capital letters „EMPLOYEE SELF SERVICES“ to „Employee Self Services“ Correct to „Travel Management“ – please write the word „Management“ with a capital „M“ Change the color from black to ETOblue Correct to „Canteen Menu“ – capital „M“', NULL, 41, 164, 1, NULL, 0, '2020-12-18 17:13:25', '2020-12-18 06:53:27'),
(265, 570184, 3, 'developer', 'uploads/resumes/2020/12/18/570184_151727_4616.docx', 'Membership \r\nWe should track all the subscription plan purchased. When a User buy the Subscription plan for one month, keep the Subscription plan Counter = 1 and Membership Type = Silver. User is a Silver Member. Next time when the same user buy the subscription for 3 months, then the Subscription plan counter = 1+3 and Membership type = Gold. Now the user is a Gold Member. Subscription modification and Pause will not impact the existing membership. Mobile application should show the membership type.\r\nSubscription Counter = 1&gt;3 = Silver Member\r\nSubscription Counter = 3&gt;6 = Gold Member\r\nSubscription Counter = 6&gt;12 = Platinum Member\r\nSubscription Counter = 12 or above = Titanium Member\r\nSearch, Sort and Export should be added in this masters\r\nMembership Table\r\nUser ID User Mobile # Email ID User Type Membership Type Subscription ID Subscription Status\r\nCorporate/Individual Active/Pause/Expired\r\nLoyalty \r\nSubscription based Loyalty\r\nFor every subscription order, when the Order status is changed by the Admin User to Delivered, the loyalty point is calculated based on the order value.\r\nFor Silver members Formula for Loyalty point is (Order value of the day X 1%).\r\nFor Gold members Formula for Loyalty point is (Order value of the day X 2%)\r\nFor Platinum members Formula for Loyalty point is (Order value of the day X 3%)\r\nFor Titanium members Formula for Loyalty point is (Order value of the day X 4%)\r\nLoyalty collected = (Percentage based on membership type) * Purchase Value\r\nSilver – 1%\r\nGold – 2%\r\nPlatinum – 3%\r\nTitanium – 4%\r\nReferral Loyalty\r\nEvery user has a referral code that is stored in the DB. When the new User register to the mobile application as an Individual or corporate user, he or she need to enter the referral code of the User who has invited. This code should be checked with the back end to identify who has referred the new User. Hence the Referral code of each User should be stored in the User Management. Now the user who has referred should receive the 10 Loyalty points.\r\nSearch, Sort and Export should be added in this masters\r\nConfig Loyalty\r\nThis page has the following text field\r\nSubscription Loyalty\r\nSilver Membership Loyalty – A text field allows the Admin User to mention the percentage from 0 to 99 only\r\nGold Membership Loyalty – A text field shows the percentage from 0 to 99 only\r\nPlatinum Membership Loyalty – A text field shows the percentage from 0 to 99 only\r\nTitanium Membership Loyalty – A text field shows the percentage from 0 to 99 only\r\nReferral Loyalty\r\nReferral Points – A text field allows numbers from 0 to 999\r\nLoyalty Points Table\r\nUser ID User Mobile # Email ID User Type Membership Type Loyalty Balance\r\nCorporate/Individual Silver/Gold/Platinum/Titanium 1000\r\nLoyalty Details Page\r\nEarned by Subscription (Button) | Earned by Referral (Button) | Redeemed (Button)\r\nEarned by Subscription\r\nOrder ID Order Value Membership Type Transaction Date Current Balance Loyalty Earned Closing Balance\r\nEarned by Referral\r\nReferred User ID Date of Registration Current Balance Loyalty Earned  Closing Balance\r\nUser ID of the Use who has registered with this User referral code Loyalty Redeemed \r\nOrder Type Order ID Transaction Date Current Balance Redeemed Points  Closing Balance\r\nSubscription/ Instant/Event When the redemption is applied in the check out process, user will use the loyalty points for payment. Hence you will have current balance lets us 500 points and in the check out process you have used 200 points now the closing balance is 300\r\nIn the Referral loyalty, current balance is say 500 and after earning 10 loyalty by referring the application, closing balance is 510\r\nYou May Like/New Arrival in Product Management\r\nEach product when it is added by the Admin User in the Product Management, there are 2 check boxes appear 1) You May Like 2) New Arrivals. When the Admin User select these check boxes, products will appear under the You May Like and New Arrival sections in the mobile application. Each city can have only 5 products that are You May Like and New Arrivals. Hence when selecting these check boxes, make sure the Available City of Product can have only 5 products for You may Like and New arrivals.\r\nYou May Like (View Only)\r\nThis module provide the products that are selected by the Admin User as a You May Like for all the Cities. \r\nPlease add Search/Sort/Export\r\nYou May Like Table\r\nAvailable City Name Product ID Product Name Created Date\r\nHyderabad Product123 Kinley 20 LtrNew Arrival (View Only)\r\nThis module provide the products that are selected by the Admin User as a new arrival for all the Cities. \r\nPlease add Search/Sort/Export\r\nNew Arrival Table\r\nAvailable City Name Product ID Product Name Created Date\r\nHyderabad Product123 Kinley 20 LtrTrending Brands in Brand Management\r\nBrand Management should have 2 fields that are Available Cities drop down and Trending Brands Check box. Admin User can select only 5 Trending Brands per Available City.\r\nOn making any Brand as Trending Brand, these brands should be available in the mobile application if the User belongs to that City only.\r\nTrending Brands(View Only)\r\nThis module provide the Brands that are selected by the Admin User as a Trending Brands for all the Cities. \r\nPlease add Search/Sort/Export\r\nTrending Brands Table\r\nAvailable City Name Brand ID Brand Name Created Date\r\nHyderabad Product123 Kinley 20 LtrCity Management\r\nMobile application\r\nWhen the Retailer or Corporate registers in the application, he or she uses the delivery and billing address using the Google Places. \r\nBased on the selected City following information should be shown to the User\r\nProducts\r\nBrands\r\nCategories\r\nYou May Like\r\nNew Arrivals\r\nTrending Brands \r\nWhen the User go to check out and tries to add a new location, we should make sure the new address should be in the same City that of the default address. No new city should be allowed.\r\nWhen the User travel to different City, in the dashboard always check the current location of the User and compare with default city address. If both are same show the dashboard items related to the Default address. If current location and default address does not match, show a pop up stating “Currently you are in a different city, if you would like to see the products of current city, please change the default address in My Accounts” and still show the items related to default city only. Now to change the address to different city, User can go to My Account and change the new address that belongs to different city. On selecting the default city and saving the address, if the new address belongs to a different address then the existing Subscription, Event delivery should be cancelled and money should be refund back to Wallet and status of Subscription should be cancelled. Dashboard shall show the items that are belongs to the new default address.\r\nAdmin Panel\r\nAvailable City in Category/Package Management – There should be an Available City selection drop down which will allow the Admin User to select one City for a Categories. Category/Package name should be unique per city, but same name can be possible for a different city.\r\nAvailable City Category ID Package Type Category Image Order Date of Creation Date of Modification Status\r\nNote: Category Name can be same for different Cities. But same city cannot have the same Category Name\r\nAdd/Edit\r\nAvailable City – Only one city can be selected. Data should be from the City Management \r\nPackage Type\r\nUnit Type\r\nCategory Image\r\nOrder\r\nAvailable City in Brand Management – There should be an Available City selection drop down which will allow the Admin User to select one City for a Brand. Brand name should be unique per city, but same name can be possible for a different city.\r\nAvailable City City Name(Remove it) Company Name Company ID  Brand Name  Brand ID  Order Brand Description\r\nBrand photo Admin User ID  Created By Admin User Name  D.O.C  D.O.M  Brand Status Actions\r\nNote: Brand Name can be same for different Cities. But same city cannot have the same Category Name\r\nAdd/Edit\r\nBrand Logo\r\nAvailable City - Only one city can be selected. Data should be from the City Management \r\nCompany Name\r\nCompany ID\r\nBrand Name\r\nBrand Description\r\nOrder\r\nAvailable City in Product Management - There should be an Available City selection drop down which will allow the Admin User to select one City for a Product. Product name should be unique per city, but same name can be possible for a different city.\r\n \r\nAvailable City Product Name Company Name Plant Name Product ID Product Logo\r\nProduct Images Package Type Description Specification Technical Expiry Date\r\nUnit Price MRP Purchase Price Discount in % GST Return Policy\r\nCity Name(Remove It) Date of Creation Date of Modification Added by Admin User ID Product Status Upload Images Actions\r\nNote: Product Name can be same for different Cities. But same city cannot have the same Category Name\r\nAdd/Edit\r\nCompany Name\r\nCompany ID\r\nAvailable City (Select one City only)\r\nBrand Name (Based on Company &amp;&amp; Based on Available City for which those brands belongs)\r\nBrand ID\r\nPlant Name\r\nPlant ID\r\nProduct Name\r\nProduct Logo\r\nPackage Type (Based on Available City, show the Packages that are belongs to the selected Available City)\r\nDescription\r\nSpecification\r\nTechnical\r\nUnit Price\r\nGST in %\r\nMRP\r\nDiscount in %\r\nPurchase Price\r\nReturn Policy\r\nExpiry Date\r\nDeactivation/Activation\r\nCity Deactivation – On deactivating the available City, following related items should be deactivated\r\nCity\r\nPackage Types\r\nBrands\r\nProducts\r\nActive Subscriptions ( Cancelled)\r\nActive Instant Delivery ( Cancelled)\r\nActive Event Delivery ( Cancelled)\r\nCategory Deactivation – On deactivating the Category, following related items should be deactivated\r\nCategory\r\nProducts\r\nActive Subscriptions ( Cancelled)\r\nActive Instant Delivery ( Cancelled)\r\nActive Event Delivery ( Cancelled)\r\nBrand Deactivation – On deactivating the Brand, following related items should be deactivated\r\nBrand\r\nProducts\r\nActive Subscriptions ( Cancelled)\r\nActive Instant Delivery ( Cancelled)\r\nActive Event Delivery ( Cancelled)\r\nProduct Deactivation – On deactivating the Product, following related items should be deactivated\r\nProduct\r\nActive Subscriptions ( Cancelled)\r\nActive Instant Delivery ( Cancelled)\r\nActive Event Delivery ( Cancelled)\r\nCompany Deactivation – On Deactivating the Company, following items should be deactivated\r\nCompany\r\nBrands\r\nPlants\r\nProducts\r\nActive Subscriptions ( Cancelled)\r\nActive Instant Delivery ( Cancelled)\r\nActive Event Delivery ( Cancelled)\r\nPlant Deactivation – On Deactivating the Plant, following items should be deactivated\r\nPlant\r\nProducts\r\nActive Subscriptions ( Cancelled)\r\nActive Instant Delivery ( Cancelled)\r\nActive Event Delivery ( Cancelled)\r\nAdmin Deactivation – Should be blocked from logging from the Admin panel\r\nRole Deactivation – Should block the role and its corresponding Admin Users\r\nCustomer and Corporate Deactivation – Should block the user to login from the mobile application\r\nRating Management \r\nRating Management Page has the list of Orders with Ratings given by the Customers. Admin User can the View in the Masters.\r\nRating TableUser_IDUser_Mobile_NumberUser_Email_IDOrder_IDProduct_IDProduct_NameDate and Time of Rating Rating given by User in 1 to 5 range Overall_Product_RatingConfigure ListThis settings allows the Administrator to add or delete the list from displaying in the list viewSortTop header should be sortable by ascending or descending order. \r\nSearchThere should be a search to search the Rating details by \r\nUser_ID \r\nUser_Mobile_NumberUser_Email_IDOrder_IDProduct_IDProduct_NameFiltersFilter Option should be provided for filtering the Rating details based on \r\nDate and Time of Rating\r\nUser_ID \r\nUser_Mobile_NumberUser_Email_IDOrder_IDProduct_IDProduct_NameRating given by User in 1 to 5 range\r\nOverall_Product_RatingExport PDF/ExcelThere should be an Export button to export the Rating details to Excel or PDF. \r\nStock Management\r\nCurrently the stock management works like an off-line inventory, but we need to make it online by connecting the stocks with orders. Whenever the Orders are delivered for Instant, Event and Subscription, the stock quantity for a product from the order should be reduced and updated. When the stock goes 0, please show the Stock Availability Status as Unavailable.\r\nChat Integration\r\nChat API integration should be from the Mobile application and Admin Panel. There should be a Chat Master in the Admin Panel. This should have the Access in the Role as well. When the Customer from mobile try to type the text chat, the admin who has logged in to the Admin Panel and has permission to the Chat master can see the chat and reply back to customer.\r\nNote: Chat API will be provided by client', NULL, 41, 174, 1, NULL, 0, '2020-12-18 20:17:27', '2020-12-18 09:58:05'),
(266, 570189, 2, 'Test engineer', 'uploads/resumes/2021/05/07/570189_135038_4019.pdf', 'A Simple PDF File This is a small demonstration .pdf file - just for use in the Virtual Mechanics tutorials. More text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. Boring, zzzzz. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. Even more. Continued on page 2 ... Simple PDF File 2 ...continued from page 1. Yet more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. Oh, how boring typing this stuff. But not as boring as watching paint dry. And more text. And more text. And more text. And more text. Boring. More, a little more text. The end, and just as well.', NULL, 41, 160, 1, NULL, 0, '2021-05-07 08:20:38', '2021-05-07 09:59:51'),
(267, 570190, 5, 'test engineer', 'uploads/resumes/2021/05/07/570190_155145_2087.pdf', 'A Simple PDF File This is a small demonstration .pdf file - just for use in the Virtual Mechanics tutorials. More text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. Boring, zzzzz. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. Even more. Continued on page 2 ... Simple PDF File 2 ...continued from page 1. Yet more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. Oh, how boring typing this stuff. But not as boring as watching paint dry. And more text. And more text. And more text. And more text. Boring. More, a little more text. The end, and just as well.', NULL, 41, 174, 1, NULL, 0, '2021-05-07 10:21:45', '2021-05-07 10:40:37'),
(268, 570191, 3, 'enfineer', 'uploads/resumes/2021/05/07/570191_161411_8007.pdf', 'A Simple PDF File This is a small demonstration .pdf file - just for use in the Virtual Mechanics tutorials. More text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. Boring, zzzzz. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. Even more. Continued on page 2 ... Simple PDF File 2 ...continued from page 1. Yet more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. Oh, how boring typing this stuff. But not as boring as watching paint dry. And more text. And more text. And more text. And more text. Boring. More, a little more text. The end, and just as well.', NULL, 43, 168, 1, NULL, 0, '2021-05-07 10:44:11', '2021-05-07 10:50:55'),
(269, 570193, 7, 'Business Lead1', 'uploads/resumes/2021/10/11/570193_184948_1232.pdf', 'A Simple PDF File This is a small demonstration .pdf file - just for use in the Virtual Mechanics tutorials. More text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. Boring, zzzzz. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. Even more. Continued on page 2 ... Simple PDF File 2 ...continued from page 1. Yet more text. And more text. And more text. And more text. And more text. And more text. And more text. And more text. Oh, how boring typing this stuff. But not as boring as watching paint dry. And more text. And more text. And more text. And more text. Boring. More, a little more text. The end, and just as well.', NULL, NULL, 169, 1, NULL, 0, '2021-10-11 13:19:48', '2021-10-12 06:23:28'),
(270, 570202, 4, 'QA Engineer', 'uploads/resumes/2021/10/13/570202_150822_292.pdf', '', 'texas', 41, 24, 0, NULL, 0, '2021-10-13 09:38:22', NULL),
(271, 570204, 6, 'MBBS doctor', 'uploads/resumes/2021/10/14/570204_155813_2836.pdf', 'Web and Mobile: Social Wall - Posts All posts on Social Wall are still pending, please see above screenshot. Web and Mobile: Social Wall - Posts The user Silke Maier tried to create a post on social wall, but we can‘t see the post on social wall and can‘t see the post in the „Manage Post“ list. Web: Settings – Change password Can‘t change the password. Previous password ist correct and the new passwordrelates to the password requirements.Please correctthe German word „Stornieren“ to „Abbrechen“. Mobile: Settings – Change password When I want to reset my password in the mobile version, I get a error which called unvalid e mail ID.', NULL, 41, 157, 0, NULL, 0, '2021-10-14 10:28:14', NULL),
(272, 570209, 14, 'teacher teachiing', 'uploads/resumes/2021/12/09/570209_180426_1198.docx', 'Y.Pranay Kumar\r\n    Hyderabad, Telangana| reddypranay71@gmail.com | https://www.linkedin.com/in/pranay-yampalla-53aaa5164Education\r\n\r\nIRC, CCBP Intensive 4.0 Tech Program                             Dec 2020 - Ongoing\r\nFull Stack Web Development\r\nAnurag College Of Engineering– Medchal, Telangana                 Aug 2016 - Oct 2020 \r\nB-Tech(Mechanical) – 6.53 CGPA\r\nSri Medha V Junior College  – Medchal, Telangana           Jun 2014 - Mar 2016                  \r\nIntermediate(MPC) - 87.2 Percentage                                                                                                               \r\nSt.Stephen’s Grammar High School – Medchal, Telangana                 Mar 2014                                \r\nS.S.C - 9.0 CGPA    \r\nTechnical Skills\r\n\r\nFront-End HTML, CSS, Bootstrap, JavaScript\r\nTesting Manual Testing, ETL testing\r\n Databases  SQL, MongoDB*\r\nProfessional Experience\r\n\r\nIntellect design arena                             Aug 2021 - Oct 2021     Worked on manual testing and ETL testing \r\nProjects\r\n\r\nCountries Search Website            Feb 2021 \r\nDeveloped responsive countries search application which shows all countries and respective population in the world.We can also search the specific country.\r\nFetched countries list from server asynchronously using fetch GET HTTP API call and implemented responsiveness using Bootstrap grid system and CSS box model\r\nImplemented local search functionality by using input element,JavaScript event listeners and filtered countries using Array filter method\r\nTechnologies: HTML, CSS, Bootstrap,Rest API calls, JavaScript                      Link:pranaycountries.ccbp.techBook Search Website                                                Jan 2021 \r\nDeveloped online bookstore which shows popular books for given words,user also can limit number of books he would like to see\r\nFetched the paragraph from the server asynchronously using fetch GET HTTP API call and implemented responsiveness using different Bootstrap classes through mobile-first approach\r\nImplemented user inputs of  book words and limits by using html form elements input,select and maintain that data using JavaScript event listeners\r\nTechnologies: HTML, CSS, Bootstrap,JavaScript,Rest API Calls                    Link:pranybooksearch.ccbp.tech       \r\nE Commerce Website             Jan 2021 \r\nDeveloped E Commerce website where users can go through different products,detailed information about a product,offers and contact us info.\r\nDesigned page using following HTML structure elements and footer elements by using different bootstrap classes for responsiveness through mobile-first approach\r\nImplemented product youtube videos by using bootstrap embed and model components and displayed multiple images of offers in a carousel using bootstrap carousel \r\nTechnologies: HTML, CSS, Bootstrap Flexbox                                            Link: HYPERLINK \"http://pranayecommerce.ccbp.tech\" \\h pranayecommerce.ccbp.tech\r\nExtra-Curricular\r\n\r\nAchieved 2nd Prize in Under-14 Mandal level  Chess Championship                                                      2012                                                                                         \r\nWorked in the  Non-Governmental Organisation(NGO) as a volunteer\r\nSoft Skills \r\n\r\nSelf Management,Teamwork,Confidence,Problem Solving', NULL, 0, 1, 0, NULL, 0, '2021-12-08 10:21:04', '2021-12-09 12:34:26'),
(273, 570207, 16, 'techer', 'uploads/resumes/2021/12/09/570207_180217_8806.docx', 'Questions on HRMS website \r\nIs HRMS is single role website or multiple role website \r\nIf it is multi role website what are the roles in it?\r\nWhat is functionality of role management and user management \r\nUn able to login with user id-30554\r\n\r\nUser is able to see the code while we edit and save company information\r\n\r\nIn time management unable to download detail report and summary report', NULL, 0, 1, 1, NULL, 0, '2021-12-08 10:24:28', '2021-12-09 12:32:17'),
(274, 570214, 0, 'Intern', 'uploads/resumes/2022/02/01/570214_161635_1519.docx', 'Testing the profile tab in amoeba', NULL, 42, 168, 0, NULL, 0, '2022-02-01 10:46:35', NULL),
(275, 570216, 8, 'php developer', 'uploads/resumes/2022/02/01/570216_165511_9984.docx', 'Amoeba\r\n2021\r\nChat Integration for users/call.\r\nBDM forecasting based on performance achieved targets.\r\n2022\r\nComplete web replica to mobile / with new designs.\r\nRecruits has no submission last 3 days communicate with BDM/HR.  \r\n2023\r\nProfile screening (video call for Interview).\r\nPayroll automation for (Third party integrated consultants.\r\n2024\r\nDuplicate detection for Resume search.\r\nDice IntelliSearch implementation.\r\n2025\r\nMarketing job requirements to social media.\r\nFeedback/Suggestions for BDM/Recruiter for application related.\r\n2026\r\nSecurity and Stability.\r\n2027\r\nIntegrated web mail.', NULL, NULL, 24, 1, NULL, 0, '2022-02-01 11:25:11', '2023-04-25 14:31:23'),
(276, 570217, 0, 'php developer', 'uploads/resumes/2022/02/01/570217_170020_1799.docx', 'Amoeba\r\n2021\r\nChat Integration for users/call.\r\nBDM forecasting based on performance achieved targets.\r\n2022\r\nComplete web replica to mobile / with new designs.\r\nRecruits has no submission last 3 days communicate with BDM/HR.  \r\n2023\r\nProfile screening (video call for Interview).\r\nPayroll automation for (Third party integrated consultants.\r\n2024\r\nDuplicate detection for Resume search.\r\nDice IntelliSearch implementation.\r\n2025\r\nMarketing job requirements to social media.\r\nFeedback/Suggestions for BDM/Recruiter for application related.\r\n2026\r\nSecurity and Stability.\r\n2027\r\nIntegrated web mail.', NULL, NULL, 165, 1, 1, 0, '2022-02-01 11:30:20', '2023-04-25 13:16:11'),
(277, 570218, 12, 'html', 'uploads/resumes/2022/02/14/570218_152837_6177.docx', 'Questions on HRMS website \r\nIs HRMS is single role website or multiple role website \r\nIf it is multi role website what are the roles in it?\r\nWhat is functionality of role management and user management \r\nUn able to login with user id-30554\r\n\r\nUser is able to see the code while we edit and save company information\r\n\r\nIn time management unable to download detail report and summary report', NULL, 42, 167, 0, NULL, 0, '2022-02-14 09:58:37', NULL),
(278, 570219, 12, 'PHP developer', 'uploads/resumes/2022/02/14/570219_153114_1986.docx', 'Amoeba\r\n2021\r\nChat Integration for users/call.\r\nBDM forecasting based on performance achieved targets.\r\n2022\r\nComplete web replica to mobile / with new designs.\r\nRecruits has no submission last 3 days communicate with BDM/HR.  \r\n2023\r\nProfile screening (video call for Interview).\r\nPayroll automation for (Third party integrated consultants.\r\n2024\r\nDuplicate detection for Resume search.\r\nDice IntelliSearch implementation.\r\n2025\r\nMarketing job requirements to social media.\r\nFeedback/Suggestions for BDM/Recruiter for application related.\r\n2026\r\nSecurity and Stability.\r\n2027\r\nIntegrated web mail.', NULL, 41, 174, 0, NULL, 0, '2022-02-14 10:01:14', NULL);
INSERT INTO `resumes` (`id`, `profile_id`, `total_exp`, `profile_title`, `filename`, `resume`, `location`, `emp_type_id`, `visa_type_id`, `in_place`, `in_block_list`, `in_hotlist`, `created_at`, `updated_at`) VALUES
(279, 570222, 10, 'Test engineer', 'uploads/resumes/2022/05/26/570222_145440_2213.docx', 'Previous TCS Interview for QA:    https://www.softwaretestingo.com/tcs-selenium-interview-questions/https://www.interviewbit.com/automation-testing-interview-questions/#will-automated-testing-make-manual-testing-obsoleteSelenium Interview Question:    Top 50 Selenium Interview Questions (2022) - javatpointAccenture Interview Question:   Accenture Selenium Company Interview Questions New 2022 (softwaretestingo.com)\r\nCapgemini Interview Question:   Talent Capgemini Selenium Bangalore Interview Questions 2022 (softwaretestingo.com)1.  Explain the locator present in the Selenium?     \r\nLocator Description Syntax (in Java)\r\nID Identify the WebElement using the ID attribute driver.findElement(By.id(“IdValue”));\r\nName Identify the WebElement using the Name attribute driver.findElement(By.name(“nameValue”));\r\nClassNameUse the Class attribute for identifying the object driver.findElement(By.className(“classValue”));\r\nLinkTextUse the text in hyperlinks to locate the WebElementdriver.findElement(By.linkText(“textofLink”));\r\nPartial LinkTextUse a part of the text in hyperlinks to locate the desired WebElementdriver.findElement(By.partialLinkText(“PartialTextofLink”));\r\nTagNameUse the TagName to locate the desired WebElementdriver.findElement(By.tagName(“htmlTag”));\r\nCssSelectorCSS used to create style rules in web page is leveraged to locate the desired WebElementdriver.findElement(By.cssSelector(“cssValue”));\r\nXPath Use XPath to locate the WebElementdriver.findElement(By.xpath(“xpathValue”));\r\n2. Explain assertions in selenium?\r\n In Selenium, Asserts are validations or checkpoints for an application. Assertions state confidently that application behavior is working as expected. One can say that Asserts in Selenium are used to validate the test cases. They help testers understand if tests have passed or failed.3. Difference between verify and assertions?\r\nIn the case of the “Assert” command, as soon as the validation fails the execution of that particular test method is stopped. Following that the test method is marked as failed. Whereas, in the case of “Verify”, the test method continues execution even after the failure of an assertion statement\r\n4.  How to handle the mouse click using Selenium?\r\n---&gt;     Action a = new Action(driver)            Webelement element = driver.findElement(By.xpath(“”));        a.contextClick(element).perform();\r\n5. What is the use of Data provider in the TestNG?\r\nTestNG comes up with DataProvider to automate the process of providing test-cases for execution. DataProvider helps with data-driven test cases that carry the same methods but can be run multiple times with different data sets. It also helps in providing complex parameters to the test methods\r\n6. Difference between the Selenium 2.0 and Selenium 3.0?\r\nThe main difference between selenium 3.0 and selenium 2.0 is that now all the major browser vendors will provide their own WebDriver implementations (Apple, Google, Microsoft, and Mozilla) in Selenium 3.0  instead of being developed by Selenium project (Selenium 2.0) and because they know their browsers better than anyone else, their WebDriver implementations can be tightly coupled to the browser, leading to a better testing experience for you.\r\n7. Which type of testing is mainly done for Automation Testing?\r\nUnit testing \r\n8. Explain OOPs concept briefly.\r\nprogramming concept that works on the principles of abstraction, encapsulation, inheritance, and polymorphism. It allows users to create objects they want and create methods to handle those objects.\r\nInheritance in Java is a mechanism in which one object acquires all the properties and behaviors of a parent object. It is an important part of  HYPERLINK \"https://www.javatpoint.com/java-oops-concepts\" OOPs\r\n(Object Oriented programming system).\r\nThe idea behind inheritance in Java is that you can create new  HYPERLINK \"https://www.javatpoint.com/object-and-class-in-java\" classes\r\nthat are built upon existing classes. When you inherit from an existing class, you can reuse methods and fields of the parent class. Moreover, you can add new methods and fields in your current class also.\r\n---&gt; Explore The Essentials Of Java In Selenium With Examples (softwaretestinghelp.com)\r\n9. What is Constructor in java.A constructor in Java is a special method that is used to initialize objects. The constructor is called when an object of a class is created. It can be used to set initial values for object attributes:\r\n10 List the keyword in python?11. What are the methods in API testing?\r\nThere are mainly 4 types of API Testing methods: GET, POST, Delete, and PUT. GET– The GET method is used to extract information from the given server using a given URI\r\n12 Difference between the SOAP and REST API?\r\nSr. No. Key REST API SOAP API\r\n1 Internal communication REST APIs uses multiple standards like HTTP, JSON, URL, and XML for data communication and transfer. SOAP APIs is largely based and uses only HTTP and XML.\r\n2 Resource requirement As REST API deploys and uses multiple standards as stated above, so it takes fewer resources and bandwidth as compared to SOAP API. On other hand Soap API requires more resource and bandwidth as it needs to convert the data in XML which increases its payload and results in the large sized file.\r\n3 Description REST API uses Web Application Description Language for describing the functionalities being offered by web services. On other hand SOAP API used Web Services Description language for the same.\r\n4 Security REST has SSL and HTTPS for security. On other hand SOAP has SSL( Secure Socket Layer) and WS-security due to which in the cases like Bank Account Password, Card Number, etc. SOAP is preferred over REST.\r\n5 Abbreviation REST stands for Representational State Transfer. On other hand SOAP stands for Simple Object Access Protocol\r\n6 Interchange REST can make use of SOAP as the underlying protocol for web services, because in the end it is just an architectural pattern. On other hand SOAP cannot make use of REST since SOAP is a protocol and REST is an architectural pattern.\r\n13. Write a program to launch the website?---&gt;package EmployeeApp;\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.JavascriptExecutor;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class Login_new_User {\r\npublic static void main(String[] args)  {\r\nSystem.setProperty(\"webdriver.chrome.driver\",\"E:\\\\RAJAN KUMAR JHA\\\\Testing\\\\Selenium\\\\chrome\\\\chromedriver.exe\");\r\nWebDriver driver = new ChromeDriver();\r\nString url = \"https://employee.hyenaapps.com/#/\";\r\n  driver.get(url);       \r\n    }\r\n}\r\n14. Explain is sampler and listener in Jmeter?---&gt; Samplers in JMeter allows JMeter to send different types of requests to a server. Samplers are the actual requests, JMeter sends to the web server under test. Each sampler (except Test Action) generates one or more sample results. The sample results have various attributes (success/fail, elapsed time, data size etc.) and can be viewed in the various listeners.       Listener allows us to view and analyze the Sampler request and response in the form of tables, graphs, trees etc. You can also save results in a file and read saved results later. You can access the sampler result in an ongoing load/stress test without waiting till end.15. Select the nth largest value in the list?       Select * From Employee\r\nORDERBY salary DESC\r\nLIMIT 1Offset n-1\r\n16. Write a syntax for for update row in SQl?\r\n       UPDATE Customers   SET ContactName = \'Alfred Schmidt\', City= \'Frankfurt\'   WHERE CustomerID = 1;17. What is RC in selenium?\r\nSelenium Remote Control (RC) was the main Selenium project that sustained for a long time before Selenium WebDriver(Selenium 2.0) came into existence. Now Selenium RC is hardly in use, as WebDriver offers more powerful features, however users can still continue to develop scripts using RC.\r\n18. What is an API?---&gt; APIs (Application programing interface) are the intermediary between two programs and allow data to be transferred. APIs are very versatile and can be used on the web databases, and operating systems.19.  What is the full form of SQL? ---&gt; Structured Query language\r\n20. Write the syntax to update the row in the SQL?---&gt;         UPDATE table_name                SET column1 = value1, column2 = value2, ...                 WHERE condition; 21. Explain Different type of join in the SQL?---&gt; A JOIN clause is used to combine rows from two or more tables, based on a related column between them.\r\nDIFFERENT TYPE OF SQL JOINs: ---SQL INNER JOIN KEYWORD:  The INNER JOIN keyword selects records that have matching values in both tables.    SYNTAX:          SELECT column_name(s)        FROM table1        INNER JOIN table2        ON table1.column_name = table2.column_name\r\n---SQL LEFT JOIN KEYWORD: The LEFT JOIN keyword returns all records from the left table (table1), and the matching records from the right table (table2). The result is 0 records from the right side, if there is no match.    SYNTAX:         SELECT column_name(s)        FROM table1        LEFT JOIN table2        ON table1.column_name = table2.column_name;\r\n---SQL RIGHT JOIN KEYWORD: The RIGHT JOIN keyword returns all records from the right table (table2), and the matching records from the left table (table1). The result is 0 records from the left side, if there is no match.    SYNTAX:        SELECT column_name(s)        FROM table1        RIGHT JOIN table2        ON table1.column_name = table2.column_name;\r\n---SQL FULL OUTER JOIN KEYWORD: The FULL OUTER JOIN keyword returns all records when there is a match in left (table1) or right (table2) table records.    SYNTAX:       SELECT column_name(s)       FROM table1       FULL OUTER JOIN table2       ON table1.column_name = table2.column_name        WHERE condition; --SQL SELF JOIN KEYWORD: A self-join is a regular join, but the table is joined with itself.    SYNTAX:      SELECT column_name(s)      FROM table1 T1, table1 T2      WHERE condition;23. Different types of Error in the API? ---&gt; 1XX --- Informational: Informational codes indicating that the request initiated by the browser is continuing.\r\nThe client has requested the server to switch the protocol. The server sends the 100 switching protocol as a response code to inform the client that it is switching to the protocol as requested by the client, which sent the message that includes the upgrade request header.          2XX --- Success: The 2xx class means that the request made by the client was received, understood, and accepted. Or we can say that the 2xx http status code represents that the Http request was successful.         3XX --- Redirection: The 3xx block is a class used for redirection. It indicates that the client needs to take some additional measures to complete the request. Here Redirection means URL forwarding is a process of providing more one URL to the page. The HTTP provides HTTP redirect response for such kind of operations.        4XX --- Client: (wrong request made by client)\r\n The server sends the 4xx HTTP response status codes to the client when some errors occur in the request made by the client. This response indicates that the browser has sent a wrong request with an error that cannot be processed by the server. To get the proper response, the client needs to send the correct request again.        5XX --- Server: (from server side) \r\n The error codes that come under the 5xx range are sent to the client when some problems occur with a server. When the client makes a request for some website, the browser sends a request to the website\'s server, and if the website\'s server is not able to serve the request, then the 5xx error code is sent to the client. These errors mainly when the server is facing some problem or unable to perform a request. The 5xx error messages represent the server-side error messages in which the website\'s server is unsuccessful in performing a request. The server-side error does not mean that problem is coming on a website, computer, or an internet connection. 24. What is selenium Grid?    Selenium Grid is a tool used to run parallel tests across different machines and different browsers simultaneously which results in minimized execution time.25. What is difference between “htpps” and “htpp”?\r\nParameter HTTP HTTPS\r\nProtocol It is hypertext transfer protocol. It is hypertext transfer protocol with secure.\r\nSecurity It is less secure as the data can be vulnerable to hackers. It is designed to prevent hackers from accessing critical information. It is secure against such attacks.\r\nPort It uses port 80 by default It was use port 443 by default.\r\nStarts with HTTP URLs begin with http:// HTTPs URLs begin with https://\r\nUsed for It’s a good fit for websites designed for information consumption like blogs. If the website needs to collect the private information such as credit card number, then it is a more secure protocol.\r\nScrambling HTTP does not scramble the data to be transmitted. That’s why there is a higher chance that transmitted information is available to hackers. HTTPS scrambles the data before transmission. At the receiver end, it descrambles to recover the original data. Therefore, the transmitted information is secure which can’t be hacked.\r\nProtocol It operates at TCP/IP level. HTTPS does not have any separate protocol. It operates using HTTP but uses encrypted TLS/SSL connection.\r\nDomain Name Validation HTTP website do not need SSL. HTTPS requires SSL certificate.\r\n( Secure Socket Layer)\r\nData encryption HTTP website doesn’t use encryption. HTTPS websites use data encryption.\r\nSearch Ranking HTTP does not improve search rankings. HTTPS helps to improve search ranking.\r\nSpeed Fast Slower than HTTP\r\nVulnerability Vulnerable to hackers It Is highly secure as the data is encrypted before it is seen across a network.\r\n  26. How to handle alerts ?driver.switchTo().alert().accept();\r\ndriver.switchTo().alert().dismiss();\r\ndriver.switchTo().alert().getText();\r\n27.How to switch window, if window name is not available?\r\nSet&lt;String&gt; windows = driver.getWindowHandles(); //[parentid,childid,subchildId]\r\nIterator&lt;String&gt;it = windows.iterator();\r\nString parentId = it.next();\r\nString childId = it.next();\r\n28.How to login by using URL?\r\nWe can do HTTP basic authentication URL with @ in password. We have to pass the credentials appended with the URL. The username and password must be added with the format − https://username:password@URL29.Describe TestNg in oneword?\r\nFramework\r\n30.D/B window handle and window handles?\r\ndriver.getWindowHandles() – It stores the set of handles for all the pages opened simultaneously.\r\ndriver.getWindowHandle() – It fetches the handle of the web page which is in focus. It gets the address of the active browser and it has a return type of String\r\n31.what is parameterizing in testing?\r\nParameterization in Selenium is a process to parameterize the test scripts in order to pass multiple data to the application at runtime. It is a strategy of execution which automatically runs test cases multiple times using different values\r\n32.what is Dataprovider in selenium?\r\nDataProvider helps with data-driven test cases that carry the same methods but can be run multiple times with different data sets. It also helps in providing complex parameters to the test method\r\n33. how to handle exeption in selenium\r\nTry-catch: This method can catch Exceptions by using a combination of the try and catch keywords. Try indicates the start of the block, and Catch is placed at the end of the try block to handle or resolve the Exception. The code that is written within the Try/Catch block is referred to as “protected code.” The following code represents the syntax of Try/Catch block –\r\ntry   {\r\n     // Some code\r\n   }\r\ncatch(Exception e)\r\n  {\r\n     // Code for Handling the exception\r\n  }\r\nMultiple catch blocks: There are various types of Exceptions, and one can expect more than one exception from a single block of code. Multiple catch blocks are used to handle every kind of Exception separately with a separate block of code. One can use more than two catch blocks, and there is no limitation on the number of catch blocks. The code below represents the syntax of multiple catch blocks –\r\ntry   {\r\n      //Some code\r\n   }\r\ncatch(ExceptionType1 e1)\r\n   {\r\n     //Code for Handling the Exception 1\r\n   }\r\ncatch(ExceptionType2 e2)\r\n   {\r\n     //Code for Handling the Exception 2\r\n   }\r\n34.Heirarchy of execution\r\n@BeforeSuite.\r\n@BeforeTest.\r\n@BeforeClass.\r\n@BeforeMethod.\r\n@Test.\r\n@AfterMethod.\r\n@AfterClass.\r\n@AfterTest.\r\n95.return type getwindow and getwindow handles.\r\nReturn type of getWindowHandle() is String while return type of getWindowHandles() is Set&lt;String&gt;. The return type is Set as window handle is always unique.\r\n1. WAP to print the below structure?\r\n            * \r\n        *  * \r\n      * * * \r\n   * * * * \r\n* * * * * \r\npackage Java_Programing;\r\npublic class Star_Pattern \r\npublic static void main(String[] args)  {\r\n      int row=5, i, j, space, spaceLimit;\r\n      spaceLimit = (row*2) - 2;\r\n      \r\n      for(i=0; i&lt;row; i++)     {\r\n         for(space=0; space&lt;spaceLimit; space++)\r\n            System.out.print(\" \");\r\n         for(j=0; j&lt;=i; j++)\r\n            System.out.print(\"* \");\r\n         System.out.print(\"\\n\");\r\n         spaceLimit = spaceLimit-2;\r\n      }}}\r\n\r\n2.  WAP to print the below structure?\r\n* \r\n* * \r\n* * * \r\n* * * * \r\n* * * * * \r\n package Java_Programing public class Star_Pattern {\r\n public static void main(String[] args){\r\n int i, j;\r\nfor(i=0; i&lt;5; i++    {\r\n  \r\n          for(j=0; j&lt;=i; j++)\r\n             System.out.print(\"* \");\r\n          System.out.print(\"\\n\");\r\n       }\r\n    }}\r\n3. WAP to print the below structure?\r\n* * * * * \r\n* * * * \r\n* * * \r\n* * \r\n* \r\n          \r\n package Java_Programing;\r\n \r\n public class Star_Pattern {\r\n \r\n public static void main(String[] args)\r\n    {\r\n       int i, j;\r\n      \r\n       for(i=5; i&gt;0; i--)\r\n       {\r\n  \r\n          for(j=0; j&lt;i; j++)\r\n             System.out.print(\"* \");\r\n          System.out.print(\"\\n\");\r\n       }\r\n    }}\r\n5. WAP to print the below structure?\r\n* * * * * \r\n* * * * \r\n* * * \r\n* * \r\n* \r\n package Java_Programing;\r\n \r\n public class Star_Pattern {\r\n public static void main (String args[])\r\n    {\r\n       int n = 5;\r\n       for (int i = 1; i&lt;=n ; i++) {\r\n          for (int j = i; j&lt;=n; j++) {\r\n             System.out.print( \"* \");\r\n          }\r\n          System.out.println();\r\n      }\r\n   }   }\r\n6. WAP to find the alphabet with upper case and lower case, Digit and white space in the given string?\r\npackage Java_Programing;\r\nimport java.util.Scanner;\r\npublic class Count_character_in_string{\r\n  public static void main(String[] args) {\r\n  \r\n  String str1;\r\n      System.out.println(\"Enter an String :: \");\r\n      Scanner sc = new Scanner(System.in);\r\n      str1 = sc.nextLine();\r\n      int count=0;\r\n      int count1= 0;\r\n      int count2 = 0;\r\n      int count3 = 0;\r\n      int count4 = 0;\r\n    \r\n      // Count of alphabet\r\n    for (int i=0;i&lt;str1.length();i++)\r\n    {\r\n       if(Character.isLetter(str1.charAt(i)))\r\n       count++;\r\n    }\r\n    \r\n // Count of Lower case alphabet\r\n    for (int i=0;i&lt;str1.length();i++)\r\n    {\r\n       if(Character.isLowerCase(str1.charAt(i)))\r\n       count1++;\r\n    }\r\n    \r\n    // Count of Upper case alphabet\r\n    for (int i=0;i&lt;str1.length();i++)\r\n    {\r\n       if(Character.isUpperCase(str1.charAt(i)))\r\n       count2++;\r\n    }\r\n    \r\n    // Count of Digits case alphabet\r\n    for (int i = 0; i &lt; str1.length(); i++)\r\n    {\r\n    if (Character.isDigit(str1.charAt(i)))\r\n    count3 ++;\r\n    }\r\n    \r\n    // Count of White space\r\n    for (int i = 0; i &lt; str1.length(); i++)\r\n    {\r\n    if (Character.isWhitespace(str1.charAt(i)))\r\n    count4 ++;\r\n    }\r\n    \r\nSystem.out.println(\"the number of toatl alphabets in the given string is:\"+count);\r\nSystem.out.println(\"the number of Lower case alphabets in the given string is:\"+count1);\r\nSystem.out.println(\"the number of Upper case alphabets in the given string is:\"+count2);\r\nSystem.out.println(\"the number of Digits case alphabets in the given string is:\"+count3);\r\nSystem.out.println(\"the number of Whitespace in the given string is:\"+count4);\r\n  }\r\n}\r\n7.  WAP to print the number whose sum is 7 in the given array?public class Main\r\n{\r\n    public static void main(String[] args) {\r\n       int sum = 7;\r\n       int arr[] = {1, 2, 3, 4, 5, 6};\r\n       int n = arr.length;\r\n       for(int i=0;i&lt;n;i++)\r\n        for (int j=0;j&lt;i; j++) {\r\n            if (sum == arr[i] + arr[j])\r\n                System.out.println(arr[i] +\",\" + arr[j]);\r\n        }\r\n    }\r\n}\r\n8.  WAP to find the given year is leap year or not?\r\npublic class Main\r\n{\r\n    public static void main(String[] args) {\r\n    int year =2020;\r\n       if ( (year%400 == 0 )|| ((year% 4 == 0) &amp;&amp; (year%100 != 0)))\r\n       System.out.println(\"leap Year\");\r\n       else \r\n       System.out.println(\"Not leap year\");\r\n       \r\n    }\r\n}\r\n9. WAP to print the link present in the web page?\r\npackage Testing;\r\nimport java.util.List;\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.WebElement;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class Test {\r\npublic static void main(String[] args) {\r\n\r\nSystem.setProperty(\"webdriver.chrome.driver\",\"E:\\\\RAJAN KUMAR JHA\\\\Testing\\\\Selenium\\\\chrome\\\\chromedriver.exe\");\r\nWebDriver driver = new ChromeDriver();\r\n\r\ndriver.get( \"https://www.google.co.in\");\r\nList&lt;WebElement&gt; all_links_webpage = driver.findElements(By.tagName(\"a\")); \r\nSystem.out.println(\"Total no of links Available: \" + all_links_webpage.size());\r\nint k = all_links_webpage.size();\r\nSystem.out.println(\"List of links Available: \");\r\nfor(int i=0;i&lt;k;i++)\r\n{\r\nif(all_links_webpage.get(i).getAttribute(\"href\").contains(\"google\"))\r\n{\r\nString link = all_links_webpage.get(i).getAttribute(\"href\");\r\nSystem.out.println(link);\r\n}}}}10. WAP to swap two number without using third variable?11. WAP to reverse the string?\r\n    class Reverse_String {\r\n    public static void main(String[] args) {\r\n        String str = \"Rajan\";\r\n        String nstr = \" \";\r\n      char ch;\r\n       \r\n      for (int i=0; i&lt;str.length(); i++)\r\n      {\r\n        ch= str.charAt(i); //extracts each character\r\n        nstr= ch + nstr; //adds each character in front of the existing string\r\n      }\r\n      System.out.println(\"Reversed word: \"+ nstr);\r\n    }\r\n}12. WAP to count the string in the given String?class CountSubstringInString {\r\n    public static void main(String[] args) {\r\n       String string = \"Rajan kumar jha\";\r\n      String word = \"jha\";\r\n      \r\nString temp[] = string.split(\" \");\r\nint count = 0;\r\nfor (int i = 0; i &lt; temp.length; i++) {\r\nif (word.equals(temp[i]))\r\ncount ++;\r\n}\r\nSystem.out.println(word + \" is present \"+ count +\" times in the strings.\" );\r\n    }\r\n}16. WAP to print the 1 to 100 without using for loop?public class PrintNumbers {\r\n \r\n     public static void printNum(int num) {\r\n        \r\n        //If numbers is less than or equal to 100\r\n        if(num &lt;= 100) {\r\n           System.out.print(num + \" \");\r\n           \r\n            //Increment and call printNum recursively\r\n            printNum(num+1);\r\n        }\r\n    }\r\n   \r\n     public static void main(String[] args) {\r\n        //Declare variable and assign a value 1\r\n        int n = 1;\r\n        \r\n        //call printNum method\r\n        printNum(n);\r\n    }\r\n    \r\n}', NULL, 41, 24, 0, NULL, 0, '2022-05-26 09:24:40', NULL),
(280, 570223, 14, 'Test engineer', 'uploads/resumes/2022/05/26/570223_154805_2220.docx', 'Previous TCS Interview for QA:    https://www.softwaretestingo.com/tcs-selenium-interview-questions/https://www.interviewbit.com/automation-testing-interview-questions/#will-automated-testing-make-manual-testing-obsoleteSelenium Interview Question:    Top 50 Selenium Interview Questions (2022) - javatpointAccenture Interview Question:   Accenture Selenium Company Interview Questions New 2022 (softwaretestingo.com)\r\nCapgemini Interview Question:   Talent Capgemini Selenium Bangalore Interview Questions 2022 (softwaretestingo.com)1.  Explain the locator present in the Selenium?     \r\nLocator Description Syntax (in Java)\r\nID Identify the WebElement using the ID attribute driver.findElement(By.id(“IdValue”));\r\nName Identify the WebElement using the Name attribute driver.findElement(By.name(“nameValue”));\r\nClassNameUse the Class attribute for identifying the object driver.findElement(By.className(“classValue”));\r\nLinkTextUse the text in hyperlinks to locate the WebElementdriver.findElement(By.linkText(“textofLink”));\r\nPartial LinkTextUse a part of the text in hyperlinks to locate the desired WebElementdriver.findElement(By.partialLinkText(“PartialTextofLink”));\r\nTagNameUse the TagName to locate the desired WebElementdriver.findElement(By.tagName(“htmlTag”));\r\nCssSelectorCSS used to create style rules in web page is leveraged to locate the desired WebElementdriver.findElement(By.cssSelector(“cssValue”));\r\nXPath Use XPath to locate the WebElementdriver.findElement(By.xpath(“xpathValue”));\r\n2. Explain assertions in selenium?\r\n In Selenium, Asserts are validations or checkpoints for an application. Assertions state confidently that application behavior is working as expected. One can say that Asserts in Selenium are used to validate the test cases. They help testers understand if tests have passed or failed.3. Difference between verify and assertions?\r\nIn the case of the “Assert” command, as soon as the validation fails the execution of that particular test method is stopped. Following that the test method is marked as failed. Whereas, in the case of “Verify”, the test method continues execution even after the failure of an assertion statement\r\n4.  How to handle the mouse click using Selenium?\r\n---&gt;     Action a = new Action(driver)            Webelement element = driver.findElement(By.xpath(“”));        a.contextClick(element).perform();\r\n5. What is the use of Data provider in the TestNG?\r\nTestNG comes up with DataProvider to automate the process of providing test-cases for execution. DataProvider helps with data-driven test cases that carry the same methods but can be run multiple times with different data sets. It also helps in providing complex parameters to the test methods\r\n6. Difference between the Selenium 2.0 and Selenium 3.0?\r\nThe main difference between selenium 3.0 and selenium 2.0 is that now all the major browser vendors will provide their own WebDriver implementations (Apple, Google, Microsoft, and Mozilla) in Selenium 3.0  instead of being developed by Selenium project (Selenium 2.0) and because they know their browsers better than anyone else, their WebDriver implementations can be tightly coupled to the browser, leading to a better testing experience for you.\r\n7. Which type of testing is mainly done for Automation Testing?\r\nUnit testing \r\n8. Explain OOPs concept briefly.\r\nprogramming concept that works on the principles of abstraction, encapsulation, inheritance, and polymorphism. It allows users to create objects they want and create methods to handle those objects.\r\nInheritance in Java is a mechanism in which one object acquires all the properties and behaviors of a parent object. It is an important part of  HYPERLINK \"https://www.javatpoint.com/java-oops-concepts\" OOPs\r\n(Object Oriented programming system).\r\nThe idea behind inheritance in Java is that you can create new  HYPERLINK \"https://www.javatpoint.com/object-and-class-in-java\" classes\r\nthat are built upon existing classes. When you inherit from an existing class, you can reuse methods and fields of the parent class. Moreover, you can add new methods and fields in your current class also.\r\n---&gt; Explore The Essentials Of Java In Selenium With Examples (softwaretestinghelp.com)\r\n9. What is Constructor in java.A constructor in Java is a special method that is used to initialize objects. The constructor is called when an object of a class is created. It can be used to set initial values for object attributes:\r\n10 List the keyword in python?11. What are the methods in API testing?\r\nThere are mainly 4 types of API Testing methods: GET, POST, Delete, and PUT. GET– The GET method is used to extract information from the given server using a given URI\r\n12 Difference between the SOAP and REST API?\r\nSr. No. Key REST API SOAP API\r\n1 Internal communication REST APIs uses multiple standards like HTTP, JSON, URL, and XML for data communication and transfer. SOAP APIs is largely based and uses only HTTP and XML.\r\n2 Resource requirement As REST API deploys and uses multiple standards as stated above, so it takes fewer resources and bandwidth as compared to SOAP API. On other hand Soap API requires more resource and bandwidth as it needs to convert the data in XML which increases its payload and results in the large sized file.\r\n3 Description REST API uses Web Application Description Language for describing the functionalities being offered by web services. On other hand SOAP API used Web Services Description language for the same.\r\n4 Security REST has SSL and HTTPS for security. On other hand SOAP has SSL( Secure Socket Layer) and WS-security due to which in the cases like Bank Account Password, Card Number, etc. SOAP is preferred over REST.\r\n5 Abbreviation REST stands for Representational State Transfer. On other hand SOAP stands for Simple Object Access Protocol\r\n6 Interchange REST can make use of SOAP as the underlying protocol for web services, because in the end it is just an architectural pattern. On other hand SOAP cannot make use of REST since SOAP is a protocol and REST is an architectural pattern.\r\n13. Write a program to launch the website?---&gt;package EmployeeApp;\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.JavascriptExecutor;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class Login_new_User {\r\npublic static void main(String[] args)  {\r\nSystem.setProperty(\"webdriver.chrome.driver\",\"E:\\\\RAJAN KUMAR JHA\\\\Testing\\\\Selenium\\\\chrome\\\\chromedriver.exe\");\r\nWebDriver driver = new ChromeDriver();\r\nString url = \"https://employee.hyenaapps.com/#/\";\r\n  driver.get(url);       \r\n    }\r\n}\r\n14. Explain is sampler and listener in Jmeter?---&gt; Samplers in JMeter allows JMeter to send different types of requests to a server. Samplers are the actual requests, JMeter sends to the web server under test. Each sampler (except Test Action) generates one or more sample results. The sample results have various attributes (success/fail, elapsed time, data size etc.) and can be viewed in the various listeners.       Listener allows us to view and analyze the Sampler request and response in the form of tables, graphs, trees etc. You can also save results in a file and read saved results later. You can access the sampler result in an ongoing load/stress test without waiting till end.15. Select the nth largest value in the list?       Select * From Employee\r\nORDERBY salary DESC\r\nLIMIT 1Offset n-1\r\n16. Write a syntax for for update row in SQl?\r\n       UPDATE Customers   SET ContactName = \'Alfred Schmidt\', City= \'Frankfurt\'   WHERE CustomerID = 1;17. What is RC in selenium?\r\nSelenium Remote Control (RC) was the main Selenium project that sustained for a long time before Selenium WebDriver(Selenium 2.0) came into existence. Now Selenium RC is hardly in use, as WebDriver offers more powerful features, however users can still continue to develop scripts using RC.\r\n18. What is an API?---&gt; APIs (Application programing interface) are the intermediary between two programs and allow data to be transferred. APIs are very versatile and can be used on the web databases, and operating systems.19.  What is the full form of SQL? ---&gt; Structured Query language\r\n20. Write the syntax to update the row in the SQL?---&gt;         UPDATE table_name                SET column1 = value1, column2 = value2, ...                 WHERE condition; 21. Explain Different type of join in the SQL?---&gt; A JOIN clause is used to combine rows from two or more tables, based on a related column between them.\r\nDIFFERENT TYPE OF SQL JOINs: ---SQL INNER JOIN KEYWORD:  The INNER JOIN keyword selects records that have matching values in both tables.    SYNTAX:          SELECT column_name(s)        FROM table1        INNER JOIN table2        ON table1.column_name = table2.column_name\r\n---SQL LEFT JOIN KEYWORD: The LEFT JOIN keyword returns all records from the left table (table1), and the matching records from the right table (table2). The result is 0 records from the right side, if there is no match.    SYNTAX:         SELECT column_name(s)        FROM table1        LEFT JOIN table2        ON table1.column_name = table2.column_name;\r\n---SQL RIGHT JOIN KEYWORD: The RIGHT JOIN keyword returns all records from the right table (table2), and the matching records from the left table (table1). The result is 0 records from the left side, if there is no match.    SYNTAX:        SELECT column_name(s)        FROM table1        RIGHT JOIN table2        ON table1.column_name = table2.column_name;\r\n---SQL FULL OUTER JOIN KEYWORD: The FULL OUTER JOIN keyword returns all records when there is a match in left (table1) or right (table2) table records.    SYNTAX:       SELECT column_name(s)       FROM table1       FULL OUTER JOIN table2       ON table1.column_name = table2.column_name        WHERE condition; --SQL SELF JOIN KEYWORD: A self-join is a regular join, but the table is joined with itself.    SYNTAX:      SELECT column_name(s)      FROM table1 T1, table1 T2      WHERE condition;23. Different types of Error in the API? ---&gt; 1XX --- Informational: Informational codes indicating that the request initiated by the browser is continuing.\r\nThe client has requested the server to switch the protocol. The server sends the 100 switching protocol as a response code to inform the client that it is switching to the protocol as requested by the client, which sent the message that includes the upgrade request header.          2XX --- Success: The 2xx class means that the request made by the client was received, understood, and accepted. Or we can say that the 2xx http status code represents that the Http request was successful.         3XX --- Redirection: The 3xx block is a class used for redirection. It indicates that the client needs to take some additional measures to complete the request. Here Redirection means URL forwarding is a process of providing more one URL to the page. The HTTP provides HTTP redirect response for such kind of operations.        4XX --- Client: (wrong request made by client)\r\n The server sends the 4xx HTTP response status codes to the client when some errors occur in the request made by the client. This response indicates that the browser has sent a wrong request with an error that cannot be processed by the server. To get the proper response, the client needs to send the correct request again.        5XX --- Server: (from server side) \r\n The error codes that come under the 5xx range are sent to the client when some problems occur with a server. When the client makes a request for some website, the browser sends a request to the website\'s server, and if the website\'s server is not able to serve the request, then the 5xx error code is sent to the client. These errors mainly when the server is facing some problem or unable to perform a request. The 5xx error messages represent the server-side error messages in which the website\'s server is unsuccessful in performing a request. The server-side error does not mean that problem is coming on a website, computer, or an internet connection. 24. What is selenium Grid?    Selenium Grid is a tool used to run parallel tests across different machines and different browsers simultaneously which results in minimized execution time.25. What is difference between “htpps” and “htpp”?\r\nParameter HTTP HTTPS\r\nProtocol It is hypertext transfer protocol. It is hypertext transfer protocol with secure.\r\nSecurity It is less secure as the data can be vulnerable to hackers. It is designed to prevent hackers from accessing critical information. It is secure against such attacks.\r\nPort It uses port 80 by default It was use port 443 by default.\r\nStarts with HTTP URLs begin with http:// HTTPs URLs begin with https://\r\nUsed for It’s a good fit for websites designed for information consumption like blogs. If the website needs to collect the private information such as credit card number, then it is a more secure protocol.\r\nScrambling HTTP does not scramble the data to be transmitted. That’s why there is a higher chance that transmitted information is available to hackers. HTTPS scrambles the data before transmission. At the receiver end, it descrambles to recover the original data. Therefore, the transmitted information is secure which can’t be hacked.\r\nProtocol It operates at TCP/IP level. HTTPS does not have any separate protocol. It operates using HTTP but uses encrypted TLS/SSL connection.\r\nDomain Name Validation HTTP website do not need SSL. HTTPS requires SSL certificate.\r\n( Secure Socket Layer)\r\nData encryption HTTP website doesn’t use encryption. HTTPS websites use data encryption.\r\nSearch Ranking HTTP does not improve search rankings. HTTPS helps to improve search ranking.\r\nSpeed Fast Slower than HTTP\r\nVulnerability Vulnerable to hackers It Is highly secure as the data is encrypted before it is seen across a network.\r\n  26. How to handle alerts ?driver.switchTo().alert().accept();\r\ndriver.switchTo().alert().dismiss();\r\ndriver.switchTo().alert().getText();\r\n27.How to switch window, if window name is not available?\r\nSet&lt;String&gt; windows = driver.getWindowHandles(); //[parentid,childid,subchildId]\r\nIterator&lt;String&gt;it = windows.iterator();\r\nString parentId = it.next();\r\nString childId = it.next();\r\n28.How to login by using URL?\r\nWe can do HTTP basic authentication URL with @ in password. We have to pass the credentials appended with the URL. The username and password must be added with the format − https://username:password@URL29.Describe TestNg in oneword?\r\nFramework\r\n30.D/B window handle and window handles?\r\ndriver.getWindowHandles() – It stores the set of handles for all the pages opened simultaneously.\r\ndriver.getWindowHandle() – It fetches the handle of the web page which is in focus. It gets the address of the active browser and it has a return type of String\r\n31.what is parameterizing in testing?\r\nParameterization in Selenium is a process to parameterize the test scripts in order to pass multiple data to the application at runtime. It is a strategy of execution which automatically runs test cases multiple times using different values\r\n32.what is Dataprovider in selenium?\r\nDataProvider helps with data-driven test cases that carry the same methods but can be run multiple times with different data sets. It also helps in providing complex parameters to the test method\r\n33. how to handle exeption in selenium\r\nTry-catch: This method can catch Exceptions by using a combination of the try and catch keywords. Try indicates the start of the block, and Catch is placed at the end of the try block to handle or resolve the Exception. The code that is written within the Try/Catch block is referred to as “protected code.” The following code represents the syntax of Try/Catch block –\r\ntry   {\r\n     // Some code\r\n   }\r\ncatch(Exception e)\r\n  {\r\n     // Code for Handling the exception\r\n  }\r\nMultiple catch blocks: There are various types of Exceptions, and one can expect more than one exception from a single block of code. Multiple catch blocks are used to handle every kind of Exception separately with a separate block of code. One can use more than two catch blocks, and there is no limitation on the number of catch blocks. The code below represents the syntax of multiple catch blocks –\r\ntry   {\r\n      //Some code\r\n   }\r\ncatch(ExceptionType1 e1)\r\n   {\r\n     //Code for Handling the Exception 1\r\n   }\r\ncatch(ExceptionType2 e2)\r\n   {\r\n     //Code for Handling the Exception 2\r\n   }\r\n34.Heirarchy of execution\r\n@BeforeSuite.\r\n@BeforeTest.\r\n@BeforeClass.\r\n@BeforeMethod.\r\n@Test.\r\n@AfterMethod.\r\n@AfterClass.\r\n@AfterTest.\r\n95.return type getwindow and getwindow handles.\r\nReturn type of getWindowHandle() is String while return type of getWindowHandles() is Set&lt;String&gt;. The return type is Set as window handle is always unique.\r\n1. WAP to print the below structure?\r\n            * \r\n        *  * \r\n      * * * \r\n   * * * * \r\n* * * * * \r\npackage Java_Programing;\r\npublic class Star_Pattern \r\npublic static void main(String[] args)  {\r\n      int row=5, i, j, space, spaceLimit;\r\n      spaceLimit = (row*2) - 2;\r\n      \r\n      for(i=0; i&lt;row; i++)     {\r\n         for(space=0; space&lt;spaceLimit; space++)\r\n            System.out.print(\" \");\r\n         for(j=0; j&lt;=i; j++)\r\n            System.out.print(\"* \");\r\n         System.out.print(\"\\n\");\r\n         spaceLimit = spaceLimit-2;\r\n      }}}\r\n\r\n2.  WAP to print the below structure?\r\n* \r\n* * \r\n* * * \r\n* * * * \r\n* * * * * \r\n package Java_Programing public class Star_Pattern {\r\n public static void main(String[] args){\r\n int i, j;\r\nfor(i=0; i&lt;5; i++    {\r\n  \r\n          for(j=0; j&lt;=i; j++)\r\n             System.out.print(\"* \");\r\n          System.out.print(\"\\n\");\r\n       }\r\n    }}\r\n3. WAP to print the below structure?\r\n* * * * * \r\n* * * * \r\n* * * \r\n* * \r\n* \r\n          \r\n package Java_Programing;\r\n \r\n public class Star_Pattern {\r\n \r\n public static void main(String[] args)\r\n    {\r\n       int i, j;\r\n      \r\n       for(i=5; i&gt;0; i--)\r\n       {\r\n  \r\n          for(j=0; j&lt;i; j++)\r\n             System.out.print(\"* \");\r\n          System.out.print(\"\\n\");\r\n       }\r\n    }}\r\n5. WAP to print the below structure?\r\n* * * * * \r\n* * * * \r\n* * * \r\n* * \r\n* \r\n package Java_Programing;\r\n \r\n public class Star_Pattern {\r\n public static void main (String args[])\r\n    {\r\n       int n = 5;\r\n       for (int i = 1; i&lt;=n ; i++) {\r\n          for (int j = i; j&lt;=n; j++) {\r\n             System.out.print( \"* \");\r\n          }\r\n          System.out.println();\r\n      }\r\n   }   }\r\n6. WAP to find the alphabet with upper case and lower case, Digit and white space in the given string?\r\npackage Java_Programing;\r\nimport java.util.Scanner;\r\npublic class Count_character_in_string{\r\n  public static void main(String[] args) {\r\n  \r\n  String str1;\r\n      System.out.println(\"Enter an String :: \");\r\n      Scanner sc = new Scanner(System.in);\r\n      str1 = sc.nextLine();\r\n      int count=0;\r\n      int count1= 0;\r\n      int count2 = 0;\r\n      int count3 = 0;\r\n      int count4 = 0;\r\n    \r\n      // Count of alphabet\r\n    for (int i=0;i&lt;str1.length();i++)\r\n    {\r\n       if(Character.isLetter(str1.charAt(i)))\r\n       count++;\r\n    }\r\n    \r\n // Count of Lower case alphabet\r\n    for (int i=0;i&lt;str1.length();i++)\r\n    {\r\n       if(Character.isLowerCase(str1.charAt(i)))\r\n       count1++;\r\n    }\r\n    \r\n    // Count of Upper case alphabet\r\n    for (int i=0;i&lt;str1.length();i++)\r\n    {\r\n       if(Character.isUpperCase(str1.charAt(i)))\r\n       count2++;\r\n    }\r\n    \r\n    // Count of Digits case alphabet\r\n    for (int i = 0; i &lt; str1.length(); i++)\r\n    {\r\n    if (Character.isDigit(str1.charAt(i)))\r\n    count3 ++;\r\n    }\r\n    \r\n    // Count of White space\r\n    for (int i = 0; i &lt; str1.length(); i++)\r\n    {\r\n    if (Character.isWhitespace(str1.charAt(i)))\r\n    count4 ++;\r\n    }\r\n    \r\nSystem.out.println(\"the number of toatl alphabets in the given string is:\"+count);\r\nSystem.out.println(\"the number of Lower case alphabets in the given string is:\"+count1);\r\nSystem.out.println(\"the number of Upper case alphabets in the given string is:\"+count2);\r\nSystem.out.println(\"the number of Digits case alphabets in the given string is:\"+count3);\r\nSystem.out.println(\"the number of Whitespace in the given string is:\"+count4);\r\n  }\r\n}\r\n7.  WAP to print the number whose sum is 7 in the given array?public class Main\r\n{\r\n    public static void main(String[] args) {\r\n       int sum = 7;\r\n       int arr[] = {1, 2, 3, 4, 5, 6};\r\n       int n = arr.length;\r\n       for(int i=0;i&lt;n;i++)\r\n        for (int j=0;j&lt;i; j++) {\r\n            if (sum == arr[i] + arr[j])\r\n                System.out.println(arr[i] +\",\" + arr[j]);\r\n        }\r\n    }\r\n}\r\n8.  WAP to find the given year is leap year or not?\r\npublic class Main\r\n{\r\n    public static void main(String[] args) {\r\n    int year =2020;\r\n       if ( (year%400 == 0 )|| ((year% 4 == 0) &amp;&amp; (year%100 != 0)))\r\n       System.out.println(\"leap Year\");\r\n       else \r\n       System.out.println(\"Not leap year\");\r\n       \r\n    }\r\n}\r\n9. WAP to print the link present in the web page?\r\npackage Testing;\r\nimport java.util.List;\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.WebElement;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class Test {\r\npublic static void main(String[] args) {\r\n\r\nSystem.setProperty(\"webdriver.chrome.driver\",\"E:\\\\RAJAN KUMAR JHA\\\\Testing\\\\Selenium\\\\chrome\\\\chromedriver.exe\");\r\nWebDriver driver = new ChromeDriver();\r\n\r\ndriver.get( \"https://www.google.co.in\");\r\nList&lt;WebElement&gt; all_links_webpage = driver.findElements(By.tagName(\"a\")); \r\nSystem.out.println(\"Total no of links Available: \" + all_links_webpage.size());\r\nint k = all_links_webpage.size();\r\nSystem.out.println(\"List of links Available: \");\r\nfor(int i=0;i&lt;k;i++)\r\n{\r\nif(all_links_webpage.get(i).getAttribute(\"href\").contains(\"google\"))\r\n{\r\nString link = all_links_webpage.get(i).getAttribute(\"href\");\r\nSystem.out.println(link);\r\n}}}}10. WAP to swap two number without using third variable?11. WAP to reverse the string?\r\n    class Reverse_String {\r\n    public static void main(String[] args) {\r\n        String str = \"Rajan\";\r\n        String nstr = \" \";\r\n      char ch;\r\n       \r\n      for (int i=0; i&lt;str.length(); i++)\r\n      {\r\n        ch= str.charAt(i); //extracts each character\r\n        nstr= ch + nstr; //adds each character in front of the existing string\r\n      }\r\n      System.out.println(\"Reversed word: \"+ nstr);\r\n    }\r\n}12. WAP to count the string in the given String?class CountSubstringInString {\r\n    public static void main(String[] args) {\r\n       String string = \"Rajan kumar jha\";\r\n      String word = \"jha\";\r\n      \r\nString temp[] = string.split(\" \");\r\nint count = 0;\r\nfor (int i = 0; i &lt; temp.length; i++) {\r\nif (word.equals(temp[i]))\r\ncount ++;\r\n}\r\nSystem.out.println(word + \" is present \"+ count +\" times in the strings.\" );\r\n    }\r\n}16. WAP to print the 1 to 100 without using for loop?public class PrintNumbers {\r\n \r\n     public static void printNum(int num) {\r\n        \r\n        //If numbers is less than or equal to 100\r\n        if(num &lt;= 100) {\r\n           System.out.print(num + \" \");\r\n           \r\n            //Increment and call printNum recursively\r\n            printNum(num+1);\r\n        }\r\n    }\r\n   \r\n     public static void main(String[] args) {\r\n        //Declare variable and assign a value 1\r\n        int n = 1;\r\n        \r\n        //call printNum method\r\n        printNum(n);\r\n    }\r\n    \r\n}', NULL, 41, 170, 0, NULL, 0, '2022-05-26 10:18:05', NULL);
INSERT INTO `resumes` (`id`, `profile_id`, `total_exp`, `profile_title`, `filename`, `resume`, `location`, `emp_type_id`, `visa_type_id`, `in_place`, `in_block_list`, `in_hotlist`, `created_at`, `updated_at`) VALUES
(281, 570224, 26, 'chnage if', 'uploads/resumes/2022/05/26/570224_161327_8082.docx', 'WebDriver Introduction:-(2.0/3.0)versions \r\nWebDriver is enhanced version of RC\r\nIt does not require Selenium standalone server interface\r\nProvides improved consistency compared with  Selenium Remote control \r\nIntroduction to Selenium WebDriveri) Introduction to Selenium WebDriverii) WebDriver Environment Setupiii) Create first Selenium Test CaseIntroduction to Selenium WebDriverSelenium Tool’s Suite        Selenium IDE        Selenium RC        Selenium WebDriver        Selenium Grid&gt; In 2006 Selenium WebDriver was launched at Google.&gt; In 2008, the whole Selenium team decided to merge Selenium WebDriver with Selenium RC in order to form more powerful tool called Selenium 2.0Selenium 1.0 + WebDriver = Selenium 2.0Selenium 1.0(Selenium IDE + Selenium RC + Selenium Grid)Selenium 2.0(Selenium IDE + Selenium RC + Selenium WebDriver + Selenium Grid)\r\nLatest version of webdriver is  3.14Note: Now Selenium RC is only for  maintenance projects.----------------------&gt; It is a most important tool in Selenium Suite.&gt; It has Programming interface only, no IDE.&gt; Selenium WebDriver supports various programming languages to write programs (Test scripts)JavaPythonC#RubyPerlPHP&gt; Selenium WebDriver supports various Browsers to create and execute Test cases.Mozilla FirefoxGoogle ChromeIESafariOpera etc...&gt; Selenium WebDriver supports various Operating environments.MS WindowsLinuxMacintosh etc...&gt; Selenium WebDriver supports Data driven Testing and Cross browser testing.&gt; Selenium WebDriver is faster than other tools of Selenium suite.&gt; Selenium WebDriver supports Parallel test execution with the help of either JUnit or TestNG.-------------------------------Drawbacks of selenium Webdriver&gt; Selenium WebDriver doesn\'t have IDE (some difficult to create test cases)&gt; No Built-in Result reporting facility.&gt; No other tool Integration for Test management.&gt; No centralized maintenance of Elements/objects.--------------------------------------------------How we create Test Cases /Test Scripts / Tests in Selenium WebDriver:In UFT:Using Objects information and Test Methods we create Tests.In Selenium WebDriver:Using Element Locators and Webdriver Commands/methods we create Test Cases.Selenium IDE:Using Element locators and Selenese / Selenium IDE commands we create Test cases-----------------------------------Element Locators - to recognize elements/identify elements.WebDriver commands/methods - to perform operations on elements.--------------------------------------Java Programming - for enhancing Test CasesTestNG Framework - for grouping Test cases, batch Testing and generating Test Reports.-----------------------------------------------------------ii) Selenium installation pre requisitesSteps:1) Jdk(JDK1.6/1.7/1.8) software -to create programs (Test scripts) we can prefer 1.7 version2) Eclipse Edit . Eclipse have different flavours Luna/Neon other than this indigo\r\n4)If ur using 1.7 use Luna or 1.8 Neon only 1.8of JDK\r\n        Jdk1.6/1.7/.18\r\n       Eclipse luna/neon\r\nii) Selenium jar files are required to work with webdriver\r\n1)We have to download jar file called selenium java 2.53(1.7 or 1.8 with luna)/3.4[1.8 java &amp; neon eclipse editor]\r\nSelenium –server –stanalone.jar onle new version\r\n6.we have to use other component selenium server-standalone.jar this are jar files &amp; we are also using this for RC\r\n 7) whenever we want to go with 2.53 version we need browser driver jar\r\n    Chrome driver jar \r\n    IE driver jar file \r\n    Firefox jar file\r\n---------------------------------------8 Req addons\r\n       Install Firebug and Firepath plug ins (Mozilla Firefox) for inspecting elements.   we need two add ons \r\nFire bug(id,name,css,link)\r\nFire path (x-path)\r\nWill help us to know the locators strategy of web element\r\nFire bug:-using fire bug I can develop my app based on [Id,name,css,link]\r\nFire path:-using firepath I can develop my app based on [x-path]\r\nNote:-if we select fire bug we can get automatically computable with what ever browser we are using\r\n7) Browser Driver\r\n    GeekoDriver(firefox)\r\n    Chrome Driver(Chrome)\r\n    IE Driver(internet explorer)\r\nNote:geckodriver is a interface(mediator)for selenium &amp; firefox browser 2.53version we can directly go with firefox\r\nversion geckodriver doesn’t support directly firefox that’s y we are sending one data through geckodriver\r\nmost  of the companies are with gecko\r\nDownload Selenium Web Driver Java language binding from www.seleniumhq.org website and extract.\r\nDownload files :- \r\nwww.selenium .org-&gt;selenium java 3.4.0_. downloadgeckodriverthan go to downloads selenium.java 3.4.0 extract to selenium java\r\nnext  geckodriverv.0.18.0 win 64.zip\r\nextract gecko driver  \r\nFor configuration:-\r\nGo to eclipse neon.3\r\nSame for google chrome.32or 64bit\r\nU can check in google(right click setting) \r\nCreate Java Project:-\r\n&gt;Java page\r\n&gt;New\r\n&gt;Javaproject-&gt; project name can be anything\r\n&gt;Project name-&gt;selenium\r\n&gt;Jre\r\n&gt;Use an execution here select javase-1.8\r\n&gt;Finish\r\n&gt;Now click on button under file package explorer\r\n&gt;Right click on selenium create package\r\n&gt;Select webdriver selenium right click&gt; Build path&gt; Configure build path&gt; Select \"Libraries\" tab&gt; Click \"Add external Jars\" &gt; Browse path of the WebDriver jars select seleniumjava.3.4.0(1).&gt; Apply &amp; ok -------------------------------------Webdriver Methods:-\r\nGet method:-is used to open a requested webpage\r\nEg: wd.get(\"http://www.adactin.com/HotelAppBuild2/\");\r\nFindelement:-using this method we can findout a web element from a page\r\nBy method:-Using this method we can provide the value of one of the locator &amp; web element to find element method\r\nSend keys method:- Using this method we can pass input values to a web element(Text box) \r\n        Eg: wd.findElement(By.xpath(\".//*[@id=\'username\']\")).sendKeys(\"hemanth123\");\r\n        Note:-we are using find element method &amp; by method together without by we cant use findelement method\r\nClick method: we can perform operations on a web element.\r\nWait or Time Methods: generally while we are migrating to one page another page we prefer wait methods.\r\nThread.sleep:- is used to make to wait the script for some time or\r\n is used to avoid the synchronization problem or \r\nto manage the deference time in the execution between script to  and Web page .\r\nImplicit Method:\r\nExplicits Method:\r\nClear method:-using this method we can clear the previous value if any from the web page \r\nFor every element data can be cleared separately some time our browser will have some default value for that we use clearvalue.\r\nLinear Frame Work Eg:\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class AdactinLoginwithxpath {\r\npublic static void main(String[] args) throws InterruptedException {\r\n// TODO Auto-generated method stub\r\nSystem.setProperty(\"webdriver.chrome.driver\",\"D:\\\\Anilwork\\\\Anil-selenium\\\\Sel_Binding\\\\Browser drivers\\\\chromedriver.exe\");\r\nWebDriver wd=new ChromeDriver();\r\nwd.get(\"http://www.adactin.com/HotelAppBuild2/\");\r\nThread.sleep(2000);\r\nwd.findElement(By.xpath(\".//*[@id=\'username\']\")).sendKeys(\"hemanth123\");\r\n        wd.findElement(By.xpath(\".//*[@id=\'password\']\")).sendKeys(\"hemanth123\");\r\n        wd.findElement(By.xpath(\".//*[@id=\'login\']\")).click();\r\n        \r\n}\r\ngetCurrentUrl: is used to get the current page url\r\neg:\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class GetCurrentUrl {\r\npublic static void main(String[] args) {\r\n// TODO Auto-generated method stub\r\nSystem.setProperty(\"webdriver.chrome.driver\", \"D:\\\\Anilwork\\\\Anil-selenium\\\\Sel_Binding\\\\Browser drivers\\\\chromedriver.exe\");\r\nWebDriver wd=new ChromeDriver();\r\n\r\nwd.get(\"https://www.amazon.com/\");\r\nString x=wd.getCurrentUrl();\r\nSystem.out.print(x);\r\n}\r\n}\r\ngetTittle: is used to get the Tittle of the current webpage.\r\nEg:\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class GetTittle {\r\npublic static void main(String[] args) {\r\n// TODO Auto-generated method stub\r\nSystem.setProperty(\"webdriver.chrome.driver\",\"D:\\\\Anilwork\\\\Anil-selenium\\\\Sel_Binding\\\\Browser drivers\\\\chromedriver.exe\");\r\nWebDriver wd=new ChromeDriver();\r\nwd.get(\"http://www.adactin.com/HotelAppBuild2/\");\r\nString x=wd.getTitle();\r\nSystem.out.println(x);\r\n}\r\n}\r\ngetPageSource: is used to get the current page source code:\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class Getpagesource {\r\npublic static void main(String[] args) {\r\n// TODO Auto-generated method stub\r\nSystem.setProperty(\"webdriver.chrome.driver\", \"D:\\\\Anilwork\\\\Anil-selenium\\\\Sel_Binding\\\\Browser drivers\\\\chromedriver.exe\");\r\nWebDriver wd=new ChromeDriver();\r\n\r\nwd.get(\"https://www.amazon.com/\");\r\nString x=wd.getPageSource();\r\nSystem.out.println(x);\r\n\r\n}\r\n}\r\ngetText : is used to get the Text msg or static value from the webpage:\r\ngetAttributeValue: is used to get input value or Dynamic value of a webElement.\r\nEg:\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class Adactin_getAttribute_getText {\r\npublic static void main(String[] args) throws InterruptedException {\r\n\r\n\r\nSystem.setProperty(\"webdriver.chrome.driver\", \"D:\\\\Anilwork\\\\Anil-selenium\\\\Sel_Binding\\\\Browser drivers\\\\chromedriver.exe\");\r\nWebDriver wd=new ChromeDriver();\r\nwd.get(\"http://www.adactin.com/HotelAppBuild2/\");\r\nStringz=wd.findElement(By.xpath(\"html/body/table[2]/tbody/tr/td[1]/p[1]\")).getText();\r\nSystem.out.println(z);\r\nThread.sleep(2000);\r\nwd.findElement(By.id(\"username\" )).sendKeys(\"hemanth123\");\r\nString x=(wd.findElement(By.id(\"username\" ))).getAttribute(\"value\");\r\nSystem.out.println(\"the user name is: \"+x);\r\nwd.findElement(By.id(\"password\" )).sendKeys(\"hemanth123\");\r\nString y=(wd.findElement(By.id(\"password\"))).getAttribute(\"value\");\r\nSystem.out.println(\"the password name is\" +y);\r\nwd.findElement(By.id(\"login\" )).click();\r\nwd.quit();\r\n}\r\n}\r\nNAVIGATION METHODS:\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class NavigateMethods {\r\npublic static void main(String[] args) {\r\n// TODO Auto-generated method stub\r\nSystem.setProperty(\"webdriver.chrome.driver\", \"D:\\\\Anilwork\\\\Anil-selenium\\\\Sel_Binding\\\\Browser drivers\\\\chromedriver.exe\");\r\nWebDriver wd=new ChromeDriver();\r\n\r\nwd.get(\"https://www.amazon.com/\");\r\nString x=wd.getCurrentUrl();\r\nSystem.out.println(x);\r\n//navagate is property to,back,forward,refresh are method\r\n//navigate()to(\"url\");is used to load a new page in the current web browser\r\nwd.navigate().to(\"http://adactin.com/HotelAppBuild2/\");\r\nString y=wd.getCurrentUrl();\r\nSystem.out.println(y);\r\n\r\n//navigate().back(): is used to moves single item back  in the browser history\r\nwd.navigate().back();\r\nString z=wd.getCurrentUrl();\r\nSystem.out.println(z);\r\n\r\n\r\n//navigate().forward():is used to moves single item forward  in the browser history\r\n\r\nwd.navigate().forward();\r\nString a=wd.getCurrentUrl();\r\nSystem.out.println(a);\r\n\r\n//navigate().refresh: is used to refresh the current webpage\r\nwd.navigate().refresh();\r\n\r\n}\r\n}\r\nselectByvalue: is used to select a particular item from the given list\r\neg:\r\nnew Select(wd.findElement(By.id(\"location\"))).selectByValue(\"Sydney\");\r\nselectByIndex: is used to select a particular item from the given list based on Index location.\r\nEg:\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\nimport org.openqa.selenium.support.ui.Select;\r\npublic class SelectByVisible {\r\npublic static void main(String[] args) {\r\n// TODO Auto-generated method stub\r\nSystem.setProperty(\"webdriver.chrome.driver\", \"D:\\\\Anilwork\\\\Anil-selenium\\\\Sel_Binding\\\\Browser drivers\\\\chromedriver.exe\");\r\nWebDriver wd=new ChromeDriver();\r\n\r\nwd.get(\"https://www.amazon.com/\");\r\nnew Select(wd.findElement(By.id(\"searchDropdownBox\"))).selectByIndex(3);\r\n}\r\n}\r\nSelectByVisibleText: is used to select  particular item from the given list .\r\nEg:\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\nimport org.openqa.selenium.support.ui.Select;\r\npublic class SelectByVisible {\r\npublic static void main(String[] args) {\r\n// TODO Auto-generated method stub\r\nSystem.setProperty(\"webdriver.chrome.driver\", \"D:\\\\Anilwork\\\\Anil-selenium\\\\Sel_Binding\\\\Browser drivers\\\\chromedriver.exe\");\r\nWebDriver wd=new ChromeDriver();\r\n\r\nwd.get(\"https://www.amazon.com/\");\r\nnew Select(wd.findElement(By.id(\"searchDropdownBox\"))).selectByVisibleText(\"Books\");\r\n}\r\n}\r\nClear: is used to clear the value\r\nClose: is used to close the current page\r\nQuit: is used to close all the browsers\r\nIs Enabled: is used to check whether the element is enable state or not which returns Boolean results\r\nIsDisplayed: is used to ceck wether the element is displayed or not \r\nEg:\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class AdactinLoginwithxpath {\r\npublic static void main(String[] args) throws InterruptedException {\r\n// TODO Auto-generated method stub\r\nSystem.setProperty(\"webdriver.chrome.driver\",\"D:\\\\Anilwork\\\\Anil-selenium\\\\Sel_Binding\\\\Browser drivers\\\\chromedriver.exe\");\r\nWebDriver wd=new ChromeDriver();\r\nwd.get(\"http://www.adactin.com/HotelAppBuild2/\");\r\n boolean a=  wd.findElement(By.xpath(\".//*[@id=\'login\']\")).isEnabled();\r\n      System.out.println(a);\r\n      \r\n      boolean b=  wd.findElement(By.xpath(\".//*[@id=\'login\']\")).isDisplayed();\r\n      System.out.println(b);\r\n     \r\nThread.sleep(2000);\r\nwd.findElement(By.xpath(\".//*[@id=\'username\']\")).sendKeys(\"hemanth123\");\r\n\r\n        wd.findElement(By.xpath(\".//*[@id=\'password\']\")).sendKeys(\"hemanth123\");\r\n        wd.findElement(By.xpath(\".//*[@id=\'login\']\")).click();\r\n       \r\n        \r\n}\r\n}\r\nisSelected: is used to check the given\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class Is_selected {\r\npublic static void main(String[] args) {\r\n// TODO Auto-generated method stub\r\nSystem.setProperty(\"webdriver.chrome.driver\", \"D:\\\\WebdriverKit\\\\BrowserDrivers\\\\ChromeDrivers\\\\chromedriver.exe\");\r\nWebDriver wd=new ChromeDriver();\r\nwd.get(\"http://scoremore.talentsprint.com/login?next=/dashboard\");\r\nboolean x=wd.findElement(By.id(\"remember-yes\")).isSelected();\r\nSystem.out.println(x);\r\n}\r\n}\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class IsSelected {\r\npublic static void main(String[] args) {\r\n// TODO Auto-generated method stub\r\nSystem.setProperty(\"webdriver.chrome.driver\",\"D:\\\\Anilwork\\\\Anil-selenium\\\\Sel_Binding\\\\Browser drivers\\\\chromedriver.exe\");\r\nWebDriver wd=new ChromeDriver();\r\nwd.get(\"http://scoremore.talentsprint.com/login?next=/dashboard\");\r\nboolean x=wd.findElement(By.id(\"remember-yes\")).isSelected();\r\nSystem.out.println(x);\r\n}\r\n}\r\nModular Frame Work: is used to execute Multiple scripts at a time.\r\nSub Class1\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class Mdf_operationalMethod {\r\nWebDriver wd;\r\npublic void LaunchBrowser() {\r\nSystem.setProperty(\"webdriver.chrome.driver\",\"D:\\\\Anilwork\\\\Anil-selenium\\\\Sel_Binding\\\\Browser drivers\\\\chromedriver.exe\");//to open browser\r\n wd=new ChromeDriver();\r\n}\r\npublic void AcessApp() throws Throwable {\r\n\r\nwd.get(\"http://adactin.com/HotelAppBuild2/\");\r\nThread.sleep(2000);\r\n\r\n\r\n}\r\npublic void UserLogin() throws Throwable {\r\nwd.findElement(By.id(\"username\")).sendKeys(\"hemanth123\");\r\nwd.findElement(By.id(\"password\")).sendKeys(\"hemanth123\");\r\nwd.findElement(By.id(\"login\")).click();\r\nThread.sleep(2000);\r\n\r\n}\r\n\r\n}\r\nSubClass2\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.support.ui.Select;\r\npublic class Md_Tktbooking extends Mdf_operationalMethod \r\n{\r\npublic void tktBooking() throws InterruptedException\r\n{\r\n new Select(wd.findElement(By.id(\"location\"))).selectByValue(\"Sydney\");\r\n new Select(wd.findElement(By.id(\"hotels\"))).selectByIndex(1);\r\n new Select(wd.findElement(By.xpath(\".//*[@id=\'room_type\']\"))).selectByIndex(1);\r\n\r\n new Select(wd.findElement(By.xpath(\".//*[@id=\'room_nos\']\"))).selectByIndex(2);\r\n wd.findElement(By.xpath(\".//*[@id=\'datepick_in\']\")).sendKeys(\"03/07/2018\");\r\n wd.findElement(By.xpath(\".//*[@id=\'datepick_out\']\")).sendKeys(\"05/07/2018\");\r\nnew Select(wd.findElement(By.xpath(\".//*[@id=\'adult_room\']\"))).selectByIndex(1);\r\n \r\n new Select(wd.findElement(By.xpath(\".//*[@id=\'child_room\']\"))).selectByIndex(2);\r\n wd.findElement(By.xpath(\".//*[@id=\'Submit\']\")).click();\r\n Thread.sleep(1000);\r\n\r\n //Select hotel process\r\n wd.findElement(By.xpath(\".//*[@id=\'radiobutton_0\']\")).click();\r\n wd.findElement(By.xpath(\".//*[@id=\'continue\']\")).click();\r\n \r\n //Booking process\r\n wd.findElement(By.xpath(\".//*[@id=\'first_name\']\")).sendKeys(\"anil\");\r\n wd.findElement(By.xpath(\".//*[@id=\'last_name\']\")).sendKeys(\"KUmar\");\r\n wd.findElement(By.xpath(\".//*[@id=\'address\']\")).sendKeys(\"Delhi\");\r\n wd.findElement(By.xpath(\".//*[@id=\'cc_num\']\")).sendKeys(\"1234567123451212\");\r\n new Select(wd.findElement(By.xpath(\".//*[@id=\'cc_type\']\"))).selectByIndex(2);\r\n\r\n \r\n new Select(wd.findElement(By.xpath(\".//*[@id=\'cc_exp_month\']\"))).selectByIndex(1);\r\n new Select(wd.findElement(By.xpath(\".//*[@id=\'cc_exp_year\']\"))).selectByIndex(11); \r\n wd.findElement(By.xpath(\".//*[@id=\'cc_cvv\']\")).sendKeys(\"159\");\r\n wd.findElement(By.xpath(\".//*[@id=\'book_now\']\")).click();\r\n}\r\n}\r\nMai n Class:\r\npublic class Mdf_Execution {\r\npublic static void main(String[] args) throws Throwable {\r\n// TODO Auto-generated method stub\r\nMd_Tktbooking  a=new Md_Tktbooking();\r\na.LaunchBrowser();\r\na.AcessApp();\r\na.UserLogin();\r\na.tktBooking();\r\n}\r\n}\r\nVerification point or Assertions: IS USE D TO COMPARE ACTUAL DATA WIT EXPECTED DATA:\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class VerificationPoint {\r\npublic static void main(String[] args) {\r\n// TODO Auto-generated method stub\r\nSystem.setProperty(\"webdriver.chrome.driver\",\"D:\\\\Anilwork\\\\Anil-selenium\\\\Sel_Binding\\\\Browser drivers\\\\chromedriver.exe\");\r\nWebDriver wd=new ChromeDriver();\r\nwd.get(\"http://www.adactin.com/HotelAppBuild2/\");\r\nString a=wd.getTitle();\r\n\r\nif (a.equals(\"AdactIn.com otel Reservation System\"))\r\n{\r\nSystem.out.println(\"the tittle is same\");\r\n}\r\n\r\nelse\r\n{\r\nSystem.out.println(\"the tittle is not same\");\r\n}\r\nwd.close();\r\n}\r\nData Driven Framework with Excel or how to import the data from flat files (Excel) or Excel objects and Methods:(passing the one or more parameters to the web element at runtime).\r\npackage adactinHotels;\r\nimport java.io.FileInputStream;\r\nimport java.io.FileNotFoundException;\r\nimport java.io.IOException;\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\nimport jxl.JXLException;\r\nimport jxl.Sheet;\r\nimport jxl.Workbook;\r\nimport jxl.read.biff.BiffException;\r\npublic class DDT_Adactin {\r\npublic static void main(String[] args) throws IOException, JXLException, Exception {\r\n// TODO Auto-generated method stub\r\nFileInputStream f=new FileInputStream(\"D:\\\\WebdriverKit\\\\TestData\\\\Book1.xls\");//reading the excel file \r\nWorkbook wb=Workbook.getWorkbook(f);//reading the workbook from file\r\n//Workbook is an interface here\r\n//with the reference of Jxl jar work book interface and methods will work\r\nSheet ws=wb.getSheet(\"new\");//reading the sheet from workbook\r\n//sheet is interface here// with the reference jxl jar sheet interface and methods will work\r\nint cc=ws.getColumns();//reading the column size this is sheet method\r\nSystem.out.println(cc);\r\nint rc=ws.getRows();//reading the row size this is sheet method\r\nSystem.out.println(rc);\r\nfor(int i=1;i&lt;=rc;i++)//loop implementation for regression process\r\n{\r\nString Name=ws.getCell(0,i).getContents();//getCell is used to locate the particular cell\r\n//get content is used to fech the value from the particular cell \r\nSystem.out.println(Name);\r\nString pwd=ws.getCell(1,i).getContents();//getCell is used to locate the particular cell\r\n//get content is used to fech the value from the particular cell \r\nSystem.out.println(pwd);\r\n//Note:getColumns,getRows, getCell,get Contents belongs to sheet interface\r\nSystem.setProperty(\"webdriver.chrome.driver\",\"D:\\\\WebdriverKit\\\\BrowserDrivers\\\\Chromedrivers\\\\chromedriver.exe\");\r\nWebDriver wd=new ChromeDriver();\r\n\r\nwd.get(\"http://www.adactin.com/HotelAppBuild2/\");\r\nThread.sleep(2000);\r\nwd.findElement(By.xpath(\".//*[@id=\'username\']\")).sendKeys(Name);\r\n    wd.findElement(By.xpath(\".//*[@id=\'password\']\")).sendKeys(pwd);\r\n    wd.findElement(By.xpath(\".//*[@id=\'login\']\")).click();\r\n    Thread.sleep(1000);\r\n\r\n\r\n\r\n}\r\n\r\n}\r\n       \r\n\r\n\r\n}\r\n objects:\r\nFileInputStream \r\nExcel objects;\r\nWorkbook\r\nSheet\r\nMethods:\r\nWorkbook Method:\r\ngetWorkbookSheet Methods:\r\ngetsheetgetColumnsgetRowsgetCellgetContentsPropertyFile Concept: or How to import the data from flat files(note pad) or Note pad Objects and Methods:\r\npackage adactinHotels;\r\nimport java.io.FileInputStream;\r\nimport java.io.FileNotFoundException;\r\nimport java.io.IOException;\r\nimport java.util.Properties;\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class Notepad_Adactin {\r\npublic static void main(String[] args) throws IOException, Exception {\r\n// TODO Auto-generated method stub\r\nProperties p=new Properties();\r\nFileInputStream f=new FileInputStream(\"D:\\\\WebdriverKit\\\\TestData\\\\notepaddata.txt\");//reading the txt file from specified folder\r\np.load(f);//Load method is used to load the data from one object to another object \r\n//or from one file to another file\r\n//load method belongs to Properties object\r\nSystem.setProperty(\"webdriver.chrome.driver\",\"D:\\\\WebdriverKit\\\\BrowserDrivers\\\\Chromedrivers\\\\chromedriver.exe\");\r\nWebDriver wd=new ChromeDriver();\r\nwd.get(\"http://www.adactin.com/HotelAppBuild2/\");\r\nThread.sleep(2000);\r\nwd.findElement(By.xpath(\".//*[@id=\'username\']\")).sendKeys(p.getProperty(\"un\")); //getProperty method is used to get the value from the variable\r\nwd.findElement(By.xpath(\".//*[@id=\'password\']\")).sendKeys(p.getProperty(\"pw\"));\r\nwd.findElement(By.xpath(\".//*[@id=\'login\']\")).click();\r\n}\r\n}\r\nObjects:\r\nFileInputStream\r\nProperties\r\nMethods:\r\nProperties methods:\r\nLoad\r\ngetProperty\r\n \r\nReff: https://www.youtube.com/watch?v=g5HyaG3RABgJunit:Theory:\r\nSee in ppt’sEg:Demo\r\nimport org.junit.After;\r\nimport org.junit.AfterClass;\r\nimport org.junit.Before;\r\nimport org.junit.BeforeClass;\r\nimport org.junit.Test;\r\npublic class Junit {\r\n@BeforeClass\r\npublic static void openApp()\r\n{\r\nSystem.out.println(\"logic to open an app\");\r\n}\r\n@Before\r\npublic void loginMethod()\r\n{\r\nSystem.out.println(\"logic for login\");\r\n}\r\n@Test\r\npublic void BA()\r\n{\r\nSystem.out.println(\"Logic to check the balance\");\r\n}\r\n@Test\r\npublic void depositMethod()\r\n{\r\nSystem.out.println(\"logic to deposite the amount\");\r\n}\r\n@Test\r\npublic void withdrawlMethod()\r\n{\r\nSystem.out.println(\"Logic to witdrawl the amount\");\r\n}\r\n@After\r\npublic void logoutMethod()\r\n{\r\nSystem.out.println(\"logic to logout\");\r\n}\r\n@AfterClass\r\npublic static void closeApp()\r\n{\r\nSystem.out.println(\"Logic to close the app\");\r\n}\r\n}\r\nJunit  implementation on Project\r\nSc:1import org.junit.After;\r\nimport org.junit.Before;\r\nimport org.junit.Test;\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\nimport org.openqa.selenium.support.ui.Select;\r\npublic class Junit_adactinexample {\r\nWebDriver wd;\r\n@Before\r\npublic void LaunchProcess()\r\n{\r\nSystem.setProperty(\"webdriver.chrome.driver\",\"D:\\\\Anilwork\\\\Anil-selenium\\\\Sel_Binding\\\\Browser drivers\\\\chromedriver.exe\");\r\nwd=new ChromeDriver();\r\nwd.get(\"http://www.adactin.com/HotelAppBuild2/\");\r\n       wd.findElement(By.xpath(\".//*[@id=\'username\']\")).sendKeys(\"hemanth123\");\r\n       wd.findElement(By.xpath(\".//*[@id=\'password\']\")).sendKeys(\"hemanth123\");\r\n       wd.findElement(By.xpath(\".//*[@id=\'login\']\")).click();\r\n}\r\n@Test\r\npublic void loginProcess() throws InterruptedException\r\n{\r\n\r\n    \r\n        new Select(wd.findElement(By.id(\"location\"))).selectByValue(\"Sydney\");\r\n new Select(wd.findElement(By.id(\"hotels\"))).selectByIndex(1);\r\n new Select(wd.findElement(By.xpath(\".//*[@id=\'room_type\']\"))).selectByIndex(1);\r\n\r\n new Select(wd.findElement(By.xpath(\".//*[@id=\'room_nos\']\"))).selectByIndex(2);\r\n wd.findElement(By.xpath(\".//*[@id=\'datepick_in\']\")).sendKeys(\"03/07/2018\");\r\n wd.findElement(By.xpath(\".//*[@id=\'datepick_out\']\")).sendKeys(\"05/07/2018\");\r\n new Select(wd.findElement(By.xpath(\".//*[@id=\'adult_room\']\"))).selectByIndex(1); \r\n new Select(wd.findElement(By.xpath(\".//*[@id=\'child_room\']\"))).selectByIndex(2);\r\n wd.findElement(By.xpath(\".//*[@id=\'Submit\']\")).click();\r\n Thread.sleep(1000);\r\n\r\n //Select hotel process\r\n wd.findElement(By.xpath(\".//*[@id=\'radiobutton_0\']\")).click();\r\n wd.findElement(By.xpath(\".//*[@id=\'continue\']\")).click();\r\n \r\n //Booking process\r\n wd.findElement(By.xpath(\".//*[@id=\'first_name\']\")).sendKeys(\"anil\");\r\n wd.findElement(By.xpath(\".//*[@id=\'last_name\']\")).sendKeys(\"KUmar\");\r\n wd.findElement(By.xpath(\".//*[@id=\'address\']\")).sendKeys(\"Delhi\");\r\n wd.findElement(By.xpath(\".//*[@id=\'cc_num\']\")).sendKeys(\"1234567123451212\");\r\n new Select(wd.findElement(By.xpath(\".//*[@id=\'cc_type\']\"))).selectByIndex(2);\r\n\r\n \r\n new Select(wd.findElement(By.xpath(\".//*[@id=\'cc_exp_month\']\"))).selectByIndex(1);\r\n new Select(wd.findElement(By.xpath(\".//*[@id=\'cc_exp_year\']\"))).selectByIndex(11); \r\n wd.findElement(By.xpath(\".//*[@id=\'cc_cvv\']\")).sendKeys(\"159\");\r\n wd.findElement(By.xpath(\".//*[@id=\'book_now\']\")).click();\r\n}\r\n   \r\n@After\r\npublic void LogoutProcess()\r\n{\r\n       wd.findElement(By.linkText(\"Logout\")).click();\r\n        \r\n        wd.quit();\r\n}\r\nSC2:\r\nimport org.junit.After;\r\nimport org.junit.AfterClass;\r\nimport org.junit.Before;\r\nimport org.junit.BeforeClass;\r\nimport org.junit.Test;\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\nimport org.openqa.selenium.support.ui.Select;\r\npublic class JUnitAdactin1 {\r\n static WebDriver wd;\r\n@BeforeClass\r\npublic static void launch() throws InterruptedException{\r\n    System.setProperty(\"webdriver.chrome.driver\",\"C:\\\\Users\\\\tsuser\\\\Desktop\\\\WEB DRIVER KIT\\\\Browser Drivers\\\\ChromeDrivers\\\\chromedriver.exe\");\r\n\r\nwd=new ChromeDriver();\r\nwd.get(\"http://www.adactin.com/HotelApp/\");\r\nThread.sleep(1000);\r\n}\r\n@Before\r\npublic void login(){\r\nwd.findElement(By.id(\"username\")).sendKeys(\"tanveer123\");\r\nwd.findElement(By.id(\"password\")).sendKeys(\"tanveer123\");\r\nwd.findElement(By.id(\"login\")).click();\r\n}\r\n\r\n@Test\r\npublic void ticketBooking(){\r\nnew Select(wd.findElement(By.id(\"location\"))).selectByValue(\"Sydney\");\r\nnew Select(wd.findElement(By.id(\"hotels\"))).selectByIndex(1);\r\nnew Select(wd.findElement(By.id(\"room_type\"))).selectByVisibleText(\"Standard\");\r\nnew Select(wd.findElement(By.id(\"room_nos\"))).selectByIndex(2);\r\nwd.findElement(By.id(\"datepick_in\")).sendKeys(\"01/09/2018\");\r\nwd.findElement(By.id(\"datepick_out\")).sendKeys(\"02/09/2018\");\r\nnew Select(wd.findElement(By.id(\"adult_room\"))).selectByIndex(1);\r\nnew Select(wd.findElement(By.id(\"child_room\"))).selectByIndex(3);\r\nwd.findElement(By.id(\"Submit\")).click();\r\nwd.findElement(By.id(\"continue\")).click();\r\nwd.findElement(By.xpath(\".//*[@id=\'radiobutton_0\']\")).click();\r\nwd.findElement(By.xpath(\".//*[@id=\'continue\']\")).click();\r\nwd.findElement(By.xpath(\".//*[@id=\'first_name\']\")).sendKeys(\"SatyaMounika\");\r\nwd.findElement(By.xpath(\".//*[@id=\'last_name\']\")).sendKeys(\"Akula\");\r\nwd.findElement(By.xpath(\".//*[@id=\'address\']\")).sendKeys(\"guntur\");\r\nwd.findElement(By.xpath(\".//*[@id=\'cc_num\']\")).sendKeys(\"1234567893163456\");\r\nnew Select(wd.findElement(By.xpath(\".//*[@id=\'cc_type\']\"))).selectByIndex(2);\r\nnew Select(wd.findElement(By.xpath(\".//*[@id=\'cc_exp_month\']\"))).selectByIndex(5);\r\nnew Select(wd.findElement(By.xpath(\".//*[@id=\'cc_exp_year\']\"))).selectByIndex(5);\r\nwd.findElement(By.xpath(\".//*[@id=\'cc_cvv\']\")).sendKeys(\"048\");\r\nwd.findElement(By.xpath(\".//*[@id=\'book_now\']\")).click();\r\n}\r\n\r\n@After\r\npublic void logout(){\r\nwd.findElement(By.xpath(\".//*[@id=\'logout\']\")).click();\r\nSystem.out.println(\"Logic to logout\");\r\n}\r\n\r\n@AfterClass\r\npublic static void quit(){\r\n\r\n      wd.quit();\r\nSC:3@BeforeClass\r\nLaunch process\r\n@Bfore\r\nLoginprocess\r\n@Test\r\nmethodimplementation_getAttribut\r\n@Test\r\nmethodimplementation_getText\r\n@Test\r\nmethodimplementation_getTittle\r\n@After\r\nLogoutprocess\r\nUse reference link\r\n@AfterClass\r\nClose browser process\r\nimport org.junit.After;\r\nimport org.junit.AfterClass;\r\nimport org.junit.Before;\r\nimport org.junit.BeforeClass;\r\nimport org.junit.Test;\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\nimport org.openqa.selenium.support.ui.Select;\r\npublic class JUnitAdactin2 {\r\n static WebDriver wd;\r\n@BeforeClass\r\npublic static void launch() throws InterruptedException{\r\n    System.setProperty(\"webdriver.chrome.driver\",\"C:\\\\Users\\\\tsuser\\\\Desktop\\\\WEB DRIVER KIT\\\\Browser Drivers\\\\ChromeDrivers\\\\chromedriver.exe\");\r\n\r\nwd=new ChromeDriver();\r\nwd.get(\"http://www.adactin.com/HotelApp/\");\r\nThread.sleep(1000);\r\n}\r\n@Before\r\npublic void login(){\r\nwd.findElement(By.id(\"username\")).sendKeys(\"tanveer123\");\r\nwd.findElement(By.id(\"password\")).sendKeys(\"tanveer123\");\r\nwd.findElement(By.id(\"login\")).click();\r\n}\r\n\r\n@Test\r\npublic void getAttribute(){\r\nnew Select(wd.findElement(By.id(\"location\"))).selectByValue(\"Sydney\");\r\nnew Select(wd.findElement(By.id(\"hotels\"))).selectByIndex(1);\r\nnew Select(wd.findElement(By.id(\"room_type\"))).selectByVisibleText(\"Standard\");\r\nnew Select(wd.findElement(By.id(\"room_nos\"))).selectByIndex(2);\r\nwd.findElement(By.id(\"datepick_in\")).sendKeys(\"01/09/2018\");\r\nwd.findElement(By.id(\"datepick_out\")).sendKeys(\"02/09/2018\");\r\nnew Select(wd.findElement(By.id(\"adult_room\"))).selectByIndex(1);\r\nnew Select(wd.findElement(By.id(\"child_room\"))).selectByIndex(3);\r\nwd.findElement(By.id(\"Submit\")).click();\r\nwd.findElement(By.id(\"continue\")).click();\r\nwd.findElement(By.xpath(\".//*[@id=\'radiobutton_0\']\")).click();\r\nwd.findElement(By.xpath(\".//*[@id=\'continue\']\")).click();\r\n\r\nwd.findElement(By.xpath(\".//*[@id=\'first_name\']\")).sendKeys(\"SatyaMounika\");\r\nString y=wd.findElement(By.xpath(\".//*[@id=\'first_name\']\")).getAttribute(\"value\");\r\nSystem.out.println(y);\r\n\r\nwd.findElement(By.xpath(\".//*[@id=\'last_name\']\")).sendKeys(\"Akula\");\r\nwd.findElement(By.xpath(\".//*[@id=\'address\']\")).sendKeys(\"guntur\");\r\nwd.findElement(By.xpath(\".//*[@id=\'cc_num\']\")).sendKeys(\"1234567893163456\");\r\nnew Select(wd.findElement(By.xpath(\".//*[@id=\'cc_type\']\"))).selectByIndex(2);\r\nnew Select(wd.findElement(By.xpath(\".//*[@id=\'cc_exp_month\']\"))).selectByIndex(5);\r\nnew Select(wd.findElement(By.xpath(\".//*[@id=\'cc_exp_year\']\"))).selectByIndex(5);\r\nwd.findElement(By.xpath(\".//*[@id=\'cc_cvv\']\")).sendKeys(\"048\");\r\nwd.findElement(By.xpath(\".//*[@id=\'book_now\']\")).click();\r\n\r\n}\r\n\r\n@Test\r\npublic void getText(){\r\nnew Select(wd.findElement(By.id(\"location\"))).selectByValue(\"Sydney\");\r\nnew Select(wd.findElement(By.id(\"hotels\"))).selectByIndex(1);\r\nnew Select(wd.findElement(By.id(\"room_type\"))).selectByVisibleText(\"Standard\");\r\nnew Select(wd.findElement(By.id(\"room_nos\"))).selectByIndex(2);\r\nwd.findElement(By.id(\"datepick_in\")).sendKeys(\"01/09/2018\");\r\nwd.findElement(By.id(\"datepick_out\")).sendKeys(\"02/09/2018\");\r\nnew Select(wd.findElement(By.id(\"adult_room\"))).selectByIndex(1);\r\nnew Select(wd.findElement(By.id(\"child_room\"))).selectByIndex(3);\r\nwd.findElement(By.id(\"Submit\")).click();\r\nwd.findElement(By.id(\"continue\")).click();\r\nwd.findElement(By.xpath(\".//*[@id=\'radiobutton_0\']\")).click();\r\nwd.findElement(By.xpath(\".//*[@id=\'continue\']\")).click();\r\n\r\n\r\nwd.findElement(By.xpath(\".//*[@id=\'last_name\']\")).sendKeys(\"Akula\");\r\nwd.findElement(By.xpath(\".//*[@id=\'address\']\")).sendKeys(\"guntur\");\r\nwd.findElement(By.xpath(\".//*[@id=\'cc_num\']\")).sendKeys(\"1234567893163456\");\r\nnew Select(wd.findElement(By.xpath(\".//*[@id=\'cc_type\']\"))).selectByIndex(2);\r\nnew Select(wd.findElement(By.xpath(\".//*[@id=\'cc_exp_month\']\"))).selectByIndex(5);\r\nnew Select(wd.findElement(By.xpath(\".//*[@id=\'cc_exp_year\']\"))).selectByIndex(5);\r\nwd.findElement(By.xpath(\".//*[@id=\'cc_cvv\']\")).sendKeys(\"048\");\r\nwd.findElement(By.xpath(\".//*[@id=\'book_now\']\")).click();\r\nString x=(wd.findElement(By.xpath(\".//*[@id=\'book_hotel_form\']/table/tbody/tr[2]/td\"))).getText();\r\nSystem.out.println(x);\r\n\r\n}\r\n\r\n@Test\r\npublic void getTitle(){\r\nnew Select(wd.findElement(By.id(\"location\"))).selectByValue(\"Sydney\");\r\nnew Select(wd.findElement(By.id(\"hotels\"))).selectByIndex(1);\r\nnew Select(wd.findElement(By.id(\"room_type\"))).selectByVisibleText(\"Standard\");\r\nnew Select(wd.findElement(By.id(\"room_nos\"))).selectByIndex(2);\r\nwd.findElement(By.id(\"datepick_in\")).sendKeys(\"01/09/2018\");\r\nwd.findElement(By.id(\"datepick_out\")).sendKeys(\"02/09/2018\");\r\nnew Select(wd.findElement(By.id(\"adult_room\"))).selectByIndex(1);\r\nnew Select(wd.findElement(By.id(\"child_room\"))).selectByIndex(3);\r\nwd.findElement(By.id(\"Submit\")).click();\r\nwd.findElement(By.id(\"continue\")).click();\r\nwd.findElement(By.xpath(\".//*[@id=\'radiobutton_0\']\")).click();\r\nwd.findElement(By.xpath(\".//*[@id=\'continue\']\")).click();\r\nwd.findElement(By.xpath(\".//*[@id=\'first_name\']\")).sendKeys(\"SatyaMounika\");\r\nwd.findElement(By.xpath(\".//*[@id=\'last_name\']\")).sendKeys(\"Akula\");\r\nwd.findElement(By.xpath(\".//*[@id=\'address\']\")).sendKeys(\"guntur\");\r\nwd.findElement(By.xpath(\".//*[@id=\'cc_num\']\")).sendKeys(\"1234567893163456\");\r\nnew Select(wd.findElement(By.xpath(\".//*[@id=\'cc_type\']\"))).selectByIndex(2);\r\nnew Select(wd.findElement(By.xpath(\".//*[@id=\'cc_exp_month\']\"))).selectByIndex(5);\r\nnew Select(wd.findElement(By.xpath(\".//*[@id=\'cc_exp_year\']\"))).selectByIndex(5);\r\nwd.findElement(By.xpath(\".//*[@id=\'cc_cvv\']\")).sendKeys(\"048\");\r\nwd.findElement(By.xpath(\".//*[@id=\'book_now\']\")).click();\r\n         String z=wd.getTitle();\r\n         System.out.println(z);\r\n}\r\n\r\n\r\n@After\r\npublic void logout(){\r\nwd.findElement(By.linkText(\"Logout\")).click();\r\nwd.findElement(By.xpath(\"html/body/table[2]/tbody/tr/td[1]/table/tbody/tr/td/a\")).click();\r\n}\r\n\r\n@AfterClass\r\npublic static void quit(){\r\n\r\n      wd.quit();\r\n}\r\n}\r\nAdvanced selenium :TestNG:Theory: refer ppts (concentrate more on deferences between junit and TestNG)\r\nTextNG Demo:\r\n       package headofficepkg;\r\nimport org.testng.annotations.AfterClass;\r\nimport org.testng.annotations.AfterMethod;\r\nimport org.testng.annotations.BeforeClass;\r\nimport org.testng.annotations.BeforeMethod;\r\nimport org.testng.annotations.Test;\r\npublic class TestNG {\r\n\r\n@BeforeClass\r\n    public static void openapp()\r\n{\r\nSystem.out.println(\"logic to open an app\");\r\n}\r\n@BeforeMethod\r\npublic void login()\r\n{\r\nSystem.out.println(\"logic for login\");\r\n}\r\n@Test(priority=2) \r\npublic void BA()\r\n{\r\n System.out.println(\"logic to check the balance\");\r\n}\r\n@Test (enabled=false)\r\npublic void DEP()\r\n{\r\nSystem.out.println(\"logic to deposit the cash\");\r\n}\r\n@Test (priority =1) \r\npublic void WD()  \r\n{\r\nSystem.out.println(\"logic to withdrawl the cash\");\r\n}\r\n@AfterMethod\r\npublic void logout()\r\n{\r\nSystem.out.println(\"logic for logout\");\r\n}\r\n@AfterClass\r\npublic static void closeapp()\r\n{\r\n\r\nSystem.out.println(\"logic to close an app\");\r\n\r\n}\r\n}\r\n Difference between Junit and TestNG\r\n                    Junit                      TestNG\r\nInternal frame work External frame work\r\nSupport for annotation Support for annotation\r\nDoesn’t support for prioritization Supports prioritization\r\nDoesn’t  support for report Support for report generation\r\nWe can use @Ignore to ignore a particular method at run time Instead of using @Ignore we can use the method (enabled = false)\r\nInstead of using @before in Junit  we \r\nCan use @BeforeMethod  Instead of using @before in Junit  we \r\nCan use @BeforeMethod\r\n@BeforeClass &amp; @AfterClass are static @BeforeClass &amp; @AfterClass are static\r\nIt doesn’t support  to execute the test suite support  to execute the test suite(@TestSuite)\r\nWe can’t get the  data directly from database  I t has given dataprovider to get the data directly from database.\r\nTextNG implementation in Project:\r\nActions:How to Handle MouseOver?\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.WebElement;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\nimport org.openqa.selenium.interactions.Actions;\r\npublic class Actions_Mouseover {\r\npublic static void main(String[] args) throws Throwable {\r\n// TODO Auto-generated method stub\r\nSystem.setProperty(\"webdriver.chrome.driver\", \"D:\\\\WebdriverKit\\\\BrowserDrivers\\\\ChromeDrivers\\\\chromedriver.exe\");\r\nWebDriver wd=new ChromeDriver();\r\nwd.get(\"http://www.richasoft.com/\");\r\n\r\nWebElement mov=wd.findElement(By.id(\"menu-item-456\"));\r\nActions ac=new Actions(wd);\r\nac.moveToElement(mov).build().perform();\r\nThread.sleep(2000);\r\nwd.findElement(By.xpath(\"//li[@id=\'menu-item-486\']/a[1]\")).click();\r\n\r\n\r\n}\r\n}\r\nActions Class:How to Handle Drag and Drop operations?\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.WebElement;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\nimport org.openqa.selenium.interactions.Actions;\r\npublic class Actions_Drag_Drop {\r\npublic static void main(String[] args) {\r\n// TODO Auto-generated method stub\r\nSystem.setProperty(\"webdriver.chrome.driver\", \"D:\\\\WebdriverKit\\\\BrowserDrivers\\\\ChromeDrivers\\\\chromedriver.exe\");\r\nWebDriver wd=new ChromeDriver();\r\nwd.get(\"https://jqueryui.com/droppable/\");\r\n\r\nwd.switchTo().frame(0);\r\n\r\nWebElement SE=wd.findElement(By.id(\"draggable\"));\r\nWebElement TE=wd.findElement(By.id(\"droppable\"));\r\nActions ac=new Actions(wd);\r\nac.clickAndHold(SE).moveToElement(TE).release().build().perform();\r\n\r\n\r\n\r\n}\r\n}\r\nAlert Class:How to handle Alert msgs? Or How to handle pop-ups?\r\nimport org.openqa.selenium.Alert;\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class AllertMsg {\r\npublic static void main(String[] args) throws InterruptedException {\r\n// TODO Auto-generated method stub\r\nSystem.setProperty(\"webdriver.chrome.driver\", \"D:\\\\Anilwork\\\\Anil-selenium\\\\Sel_Binding\\\\Browser drivers\\\\chromedriver.exe\");\r\nWebDriver wd=new ChromeDriver();\r\nwd.get(\"https://mail.rediff.com/cgi-bin/login.cgi\");\r\nwd.findElement(By.name(\"proceed\")).click();\r\nThread.sleep(5000);\r\n//on this pop  we can perform two activities\r\n//Get Text of pop up msg\r\n//and then click on ok button\r\nAlert al=wd.switchTo().alert();\r\nString a=al.getText();\r\nSystem.out.println(a);\r\nal.accept();\r\n//al.dismiss();\r\n}\r\nCross browser testing Theory:\r\nIs used to verify whether our web application can work in deferent browsers or not.\r\nWhy Cross browser testing:\r\nThe webdriver API drives the web browser as the real browser would drive it.\r\nBy default Firefox driver comes with selenium Standardalone .jar library added.\r\nFor Chrome, IE, Suffari, opera etc have libraries that need to initiate externally.\r\nHow to conduct cross browser testing in selenium webdriver.\r\na.Element Locators: same for all browsers.\r\nb.WebDriver commands: same for all browsers.\r\nc.Programming features: same for all browsers.\r\nd.TextNg,Junit  Annotations:same for all browsers.\r\ne.Browser drivers: which will vary from one another.\r\nF: Inspect element:\r\nFor Mozilla: ( Inspect Element)\r\nFor  Chrome: (Inspect)\r\nWe have other developer  tools also available.\r\nTestcase: verify Launch application in all the browsers \r\nSteps:\r\nLaunch the browser with empty urlNavigate to “url”\r\nCross Browser Compatibility Testing Implementation in Project:\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\nimport org.openqa.selenium.firefox.FirefoxDriver;\r\npublic class CrossBrowser {\r\npublic static WebDriver wd;\r\npublic static int B;\r\npublic static String BN;\r\npublic static void main(String[] args) {\r\nfor ( B=1; B&lt;=2; B++)\r\n{\r\nif (B==1)\r\n{\r\nSystem.setProperty(\"webdriver.chrome.driver\",\"D:\\\\Anilwork\\\\Anil-selenium\\\\Sel_Binding\\\\Browser drivers\\\\chromedriver.exe\");\r\n    wd=new ChromeDriver();\r\nBN=\"Chrome Browser\";\r\n\r\n}\r\n\r\nelse if (B==2)\r\n{\r\nSystem.setProperty(\"webdriver.gecko.driver\",\"D:\\\\Anilwork\\\\Anil-selenium\\\\Sel_Binding\\\\Browser drivers\\\\geckodriver.exe\");\r\n wd=new FirefoxDriver();\r\nBN=\"FirefoxBrowser\";\r\n}\r\n\r\nwd.get(\"http://www.adactin.com/HotelAppBuild2/\");\r\nString a=wd.getTitle();\r\n\r\nif (a.equals(\"AdactIn.com - Hotel Reservation System\"))\r\n\r\n{   \r\nSystem.out.println(\"the tittle is same\" );\r\nSystem.out.println(\"Goole application launched and passed\" +BN);\r\n\r\n}\r\n\r\nelse\r\n{\r\nSystem.out.println(\"the tittle is not same\");\r\nSystem.out.println(\"Goole application launched and passed\" +BN);\r\n}\r\nwd.close();\r\n\r\n}\r\n}\r\n\r\n}\r\nWindow methods or ManageMethods: are used to manage the windows\r\npackage adactinHotels;\r\nimport java.lang.reflect.Type;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.WebDriver.Window;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class WindowMethods {\r\npublic static void main(String[] args) {\r\n// TODO Auto-generated method stub\r\nSystem.setProperty(\"webdriver.chrome.driver\",\"D:\\\\WebdriverKit\\\\BrowserDrivers\\\\Chromedrivers\\\\chromedriver.exe\");\r\nWebDriver wd=new ChromeDriver();\r\n\r\n//how to get the Height of the window\r\nwd.get(\"http://www.adactin.com/HotelAppBuild2/\");\r\nint a=wd.manage().window().getSize().getHeight();//used to get height of the window\r\nSystem.out.println(a);\r\n\r\n//how to get the Width of the window\r\nint b=wd.manage().window().getSize().getWidth();//used to get Width of the window\r\nSystem.out.println(b);\r\n             Point d=wd.manage().window().getPosition();\r\n             System.out.println(d);//is used to get window position\r\n             \r\n             Set&lt;Cookie&gt; e=wd.manage().getCookies();\r\n             System.out.println(e);//is used to handle the cookies\r\n\r\n             //How to Maximize the Window\r\nwd.manage().window().maximize();//Maximize method is used to maximize the widow\r\n//How to fullscree the window\r\nwd.manage().window().fullscreen();//fullscreen method is used to fullscreen the window\r\n             \r\n             int f=wd.manage().window().hashCode();\r\n             System.out.println(f);//is used to get WindowID\r\n           \r\n      Type c=wd.manage().window().getClass();\r\n      System.out.println(c);//is used to get the current methods Web driver class\r\n            \r\n             \r\n      \r\n     \r\n}\r\n}\r\nActions_How to Capture the screenshot:\r\npackage adactinHotels;\r\nimport java.io.File;\r\nimport java.io.IOException;\r\nimport java.nio.file.Files;\r\nimport org.apache.commons.io.FileUtils;\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.OutputType;\r\nimport org.openqa.selenium.TakesScreenshot;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class ScreenShot1 {\r\npublic static void main(String[] args) throws IOException {\r\n// TODO Auto-generated method stub\r\nSystem.setProperty(\"webdriver.chrome.driver\", \"D:\\\\WebdriverKit\\\\BrowserDrivers\\\\ChromeDrivers\\\\chromedriver.exe\");\r\nWebDriver wd=new ChromeDriver();\r\nwd.manage().window().maximize();\r\nwd.get(\"https://www.facebook.com/\");\r\nwd.findElement(By.xpath(\"//input[@id=\'email\']\")).sendKeys(\"testing project\");\r\nTakesScreenshot ts=(TakesScreenshot)wd;//TakesScreenshot is an Interface here \r\nFile  source=ts.getScreenshotAs(OutputType.FILE);//is used to get Screen shot at runtime\r\nSystem.out.println(\"screenshot taken\");\r\nFileUtils.copyFile(source,new File(\"D://google.png\"));//copy of file is used to transfer the data from one location to another new location)\r\nSystem.out.println(\"now your screen shot is ready to view in specified location\");\r\n//you can also create folder in project(right mouse on project-folder-enter the foldername)\r\n//to save in folder (FileUtils.copyFile(source,new File(\"./foldername/filename\"));\r\n//to view your file find your created folder in your project click on refresh button .\r\nwd.quit();\r\n}\r\n}\r\nActions_How to Perform RightClick:\r\npackage adactinHotels;\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.WebElement;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\nimport or g.openqa.selenium.interactions.Actions;\r\n   \r\nHow to write dynamic xpath:\r\nlocate any element by using \"inspect\" options by right click on the element.\r\nuse ctrl+F to validate Xpath \r\nsite: FaceBookLogin\r\nXpath:1basic xpath syntax:\r\n//htmltag[@property=\'value\']\r\neg for facebook username\r\n//input[@type=\'email\']\r\n//input[@name=\'email\']\r\n//input[@id=\'email\']\r\n//input[@class=\'inputtext\']\r\neg for facebook password\r\n//input[@type=\'password\']\r\n//input[@name=\'pass\']\r\n//input[@id=\'pass\']\r\n//input[@class=\'inputtext\']\r\neg: for Login:\r\n//input[@type=\'submit\']\r\n//input[@Value=\'Log In\']\r\n//input[@id=\'u_0_8\']\r\nnote: if we want to ignore tagname if you will get confused to understand  htmlTagname. \r\njust use * inplace of tagname.\r\neg: for facebook username\r\n//*[@type=\'email\']\r\n//*[@name=\'email\']\r\n//*[@id=\'email\']\r\n//*[@class=\'inputtext\']\r\n***NOte: * is regular expression here.\r\nXpath:2How to write xpath using multi properties.(if we have same property for two defferent elements then system may locate only the first \r\nelement) then with the help of multi properties system can recognise the elements.\r\nexplonation: \r\nfacebook username:   //input[@class=\'inputtext\']\r\nfacebook password:   //input[@class=\'inputtext\']\r\nIFthis is the case system locate only username as above we have given same property .for face book password:  //input[@class=\'inputtext\' and @type=\'password\' and @id=\'pass\']\r\nthen it will be recognise password also.\r\nXpath:3----regular expressions(when the value is very Lengthy) then we can ask system to locate element with matching information.\r\neg:fb login button:\r\n//input[contains(@type,\'submit\')]\r\neg for facebook username\r\n//input[Contains(@type,\'email\']\r\n//input[Contains(@name,\'email\']\r\n//input[Contains(@id,\'email\']\r\n//input[Contains(@class,\'inputtext\']\r\nXpath4:\r\nLinks:when we are working with links you can prefer this.\r\nsyntax:1\r\n//htmltag[text()=\'linkname\']\r\n//a[text()=\'Forgotten account?\']\r\nSyntax:2(with regular expression)\r\n//htmltag[contains(text(),\'linkname\')]\r\n//a[contains(text(),\'Forgotten account?\')]\r\nHow to write dynamic CSS:\r\ncss1:\r\ntagName[attribute=\'value\']\r\neg:Facebook username:\r\ninput[ name=\'email\']\r\nif we want to ignore tagname in css just ignore  tagname and then write remaining syntax.\r\neg://[name=\'email\']\r\ncss2:\r\ntagName#id(if we have id then only we have to use this syntax)\r\neg:facebook username:\r\ninput#email\r\ncss3:\r\ntagName.classValue\r\nInput. inputtextcss4: \r\nregular expression(when the value is very Lengthy)\r\ntagName[Attribute*=\'value\']\r\neg:Facebook username:\r\ninput[ name*=\'email\']\r\nMavens Integrations:\r\n==================\r\nPage Object Model:\r\n=================\r\nPage object model is element design Pattern it’s not a Frame work using this concept we can create element repository .i.e we can create container classes or centralized repository for elements.\r\nProcess: \r\n1.Create Page class in this design elements along with locators.\r\n2.Under this we can create constructor with argument (argument type is webdriver).\r\n3.Under this we can create methods.\r\n4.In main method we can call argument  constructor by  creating object of PageClass.\r\n5. Call the methods of Page Class by passing argument values using object(using page class object) .\r\n//****PageClass: for each page we can create one page class in this we can create elements for the particular page along with Locators AND also we can design Methods with respect to our operations.******\r\nTypes of POM:\r\n1.POM without Page Factory\r\n2.POM with Page Factory\r\nAdvantages:\r\n*Centralized maintenance of elements or centralized element repository.\r\n*Reusability of elements so that we can reduce the code size.\r\n*IT is efficient and scalable.\r\npackage headofficepkg;\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\n//Page object model is element design Pattern its not a Frame work using this concept we can create element repository .//i.e we can create container classes or centralized repository for elements.\r\n//under this we can create constructor \r\n//under this we can create methods\r\n//from main class we can directly call this methods by passing constructor values\r\n//the overall advange of page object model is best used for regression testing by passing the parameters from main classes instead of genarating multiple scripts .//****PageClass: for each page we can create one page class in this we write elements for particular page along with Locators AND also we can design Methods with repect to our operations.******\r\n//Types of POM\r\n//POM without Page Factory\r\n//POM with Page Factory\r\n//Advantages of Page Object Model\r\n//Reusability of Elements, reduces code size\r\n//It is efficient and scalable\r\n//Centralized Maintenance of Elements/Objects\r\nPageClass: or Container:\r\npublic class POM_PageClass {\r\nWebDriver wd;\r\nBy un=By.id(\"username\");\r\nBy pw=By.id(\"password\");\r\nBy sub=By.id(\"login\");\r\npublic  POM_PageClass(WebDriver wd)//wd: is argument and it is webdriver type but not string or int or something type.\r\n{\r\nthis.wd=wd;//from main method if we are passing the values will be stored in to constructor variable\"wd\" and will be given to Class variable \"wd\"\r\n//Constructor follows Method syntax\r\n//Constructor name as class name\r\n//it doent required void \r\n//it doent return any thing\r\n\r\n}\r\npublic void typeUsername(String uname)//uname: when u import the  method from your main class the method will ask u to enter the value in to \"uname\"\r\n{\r\nwd.findElement(un).sendKeys(uname);\r\n}\r\npublic String captureUsername()\r\n{\r\nreturn wd.findElement(un).getAttribute(\"value\");//after getting the value from username the same will be return to the output to main class\r\n}\r\npublic void clearUsername()\r\n{\r\nwd.findElement(un).clear();\r\n}\r\npublic void typePassword(String pwd)\r\n{\r\nwd.findElement(pw).sendKeys(pwd);\r\n}\r\npublic void clikLogin()\r\n{\r\nwd.findElement(sub).click();\r\n}\r\n}\r\nMainClass:\r\npackage headofficepkg;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class POM_TestCase {\r\npublic static void main(String[] args) throws Throwable {\r\n// TODO Auto-generated method stub\r\nSystem.setProperty(\"webdriver.chrome.driver\",\"D:\\\\Anilwork\\\\Anil-selenium\\\\Sel_Binding\\\\Browser drivers\\\\chromedriver.exe\");\r\nWebDriver abc=new ChromeDriver();//to differentiate main class variable with method variables and constructor variables we are using different variable\"abc\"\r\nThread.sleep(3000);\r\nabc.manage().window().maximize();\r\nPOM_PageClass login=new POM_PageClass(abc);\r\n\r\nabc.get(\"http://www.adactin.com/HotelAppBuild2/\");\r\n\r\nlogin.typeUsername(\"Anilkumar123\");\r\nString result=login.captureUsername();\r\nSystem.out.println(result);\r\n\r\n\r\nlogin.typePassword(\"Anilkumar123\");\r\nlogin.clikLogin();\r\n\r\n}\r\n}\r\nKeyword Driven FrameWork:\r\nIs used to reduce the efforts\r\nEven manual test engineers also can write the script using some keywords.\r\npackage adactinHotels;\r\nimport java.io.FileInputStream;\r\nimport java.io.FileNotFoundException;\r\nimport java.io.IOException;\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\nimport org.openqa.selenium.support.ui.Select;\r\nimport jxl.JXLException;\r\nimport jxl.Sheet;\r\nimport jxl.Workbook;\r\nimport jxl.read.biff.BiffException;\r\npublic class Keyworddriven {\r\npublic static void main(String[] args) throws IOException, JXLException, Throwable {\r\n// TODO Auto-generated method stub\r\nFileInputStream f=new FileInputStream(\"D:\\\\WebdriverKit\\\\TestData\\\\keyworddata.xls\");//reading the excel file \r\nWorkbook wb=Workbook.getWorkbook(f);//reading the workbook from file\r\n//Workbook is an interface here\r\n//with the reference of Jxl jar work book interface and methods will work\r\nSheet ws=wb.getSheet(\"key\");\r\nint rc=ws.getRows();\r\nSystem.out.println(rc);\r\nint cc=ws.getColumns();\r\nSystem.out.println(cc);\r\n\r\nSystem.setProperty(\"webdriver.chrome.driver\",\"D:\\\\WebdriverKit\\\\BrowserDrivers\\\\Chromedrivers\\\\chromedriver.exe\");\r\nWebDriver wd=new ChromeDriver();\r\n\r\nfor(int i=1;i&lt;=rc;i++)\r\n{\r\nString Operation=ws.getCell(0,i).getContents();//getCell is used to locate the particular cell\r\n//get content is used to fech the value from the particular cell \r\n\r\nSystem.out.println(Operation);\r\n\r\nString Element=ws.getCell(1,i).getContents();//getCell is used to locate the particular cell\r\n//get content is used to fech the value from the particular cell \r\nSystem.out.println(Element);\r\n//Note:getColumns,getRows, getCell,get Contents belongs to sheet interface\r\nString Value=ws.getCell(2,i).getContents();\r\nSystem.out.println(Value);\r\n//out put in first iteration.\r\n//Operation=enter\r\n//element=username\r\n//value=Anilkumar123\r\n\r\nswitch(Operation){\r\n\r\ncase \"Enter\":\r\nwd.findElement(By.id(Element)).sendKeys(Value);\r\nbreak;\r\ncase \"Click\":\r\nwd.findElement(By.id(Element)).click();\r\nbreak;\r\ncase \"Get\":\r\nwd.get(Value);\r\n\r\n\r\n}\r\nThread.sleep(2000);\r\n\r\n    Thread.sleep(1000);\r\n}\r\n}\r\n}\r\nNote: first we have to create data base in excel as shown below:\r\n\r\n\r\nComplete all the assignments before going to attend the interview)\r\nAssignments:\r\n1.what is autoit and how to import and report a file in autoit.\r\n2.what is the use of jenkins in selenium(Just try to know how to integrate Jenkins with Maven).\r\n3.what is API testing.\r\n4.what is appiem.', NULL, 43, 162, 0, NULL, 0, '2022-05-26 10:43:27', NULL);
INSERT INTO `resumes` (`id`, `profile_id`, `total_exp`, `profile_title`, `filename`, `resume`, `location`, `emp_type_id`, `visa_type_id`, `in_place`, `in_block_list`, `in_hotlist`, `created_at`, `updated_at`) VALUES
(282, 570225, 8, 'PHP Developer', 'uploads/resumes/2022/05/27/570225_162755_7945.docx', 'CHOPPADANDI SAGAR                                 \r\n                                                                                               Mobile No: +91-8106176863\r\n                                                                               E-mail: sagarhimic@gmail.com\r\nCareer Objective:               To work in a challenging environment as a Software Engineer utilizing my knowledge and experience to my best in providing solutions in diverse domains and also where I can upgrade my skills all the time.\r\nTechnical skills:\r\nLanguages                   : PHP\r\nFrameworks               : LARAVEL, MVC, Oops, \r\nTechnologies              : Html5 JavaScript, JQuery, Bootstrap, Ajax\r\nDatabase                     : MYSQL\r\nOperating System      : Windows 7/8.1/10\r\nWeb services           : APIs, JSON\r\nIDEs           : Eclipse, Notepad++, Xampp\r\nThird Party Integrations : Dice Profiles, Monster, SMS Gateways, AWS for SES\r\n   \r\nSummary:\r\nTechnology 7 years of experience in the field of Software Development and Information.\r\n5 years of experience in Development and Implementation of Web-based, Client/Server Applications.\r\nWorked on HRMS, CRM, AMOEBA and US Recruiting applications\r\nWorked on Monster and Dice Job portals API’s integration in our applications\r\nExperience in application development using PHP, HTML, JavaScript, JQuery and Ajax.\r\nWorked on REST Web services and knowledge on Oops concepts.\r\nExperience in LARAVEL frameworks and Bootstrap.\r\nKnowledge on payment gateways like PayPal.\r\nKnowledge on AWS for SES (Simple Email Service) Integration on our Application.\r\nProfessional Experience:\r\nWorking as Software Engineer in USM Business Systems, Hyderabad from November 2020 to till Now.\r\nWorking as Software Engineer in USM Infrastructures PVT LTD, Hyderabad from October 2017 to October 2020.\r\nWorked as Software Engineer in Zennx Solutions, Hyderabad from Aug 2016 to October 2017.\r\nWorked as Software Engineer in Ariscent Software Solutions, Hyderabad from March 2016 to Aug 2016.\r\nWorked as Software Engineer in InTeleArch Info Techlogies Pvt Ltd, Hyderabad from March 2015 to November 2016.\r\nWorked as Internship Software Engineer in Jayam Solutions, Hyderabad from March 2014 to Feb 2015.\r\nProject Name: ATS(Application Tracking System)Client: USMRole: Developer.Environment: PHP, LARAVEL, MYSQL.Team Size: 3 \r\nDuration: July-2019 to Till.Description: Applicant tracking system (ATS) is recruitment software that helps you to organize and keep track of all of your job openings, resumes, candidates, clients, and contacts while letting you create a powerful yet simple hiring process.\r\nRoles &amp; Responsibilities: Inputs from management and assign to requirements to team, handled the Development of Dashboard and admin panel and APIs for the Mobile.\r\nProject Name: CHARMSClient: USMRole: Developer.Environment: PHP, LARAVEL, MYSQL.Team Size: 4 \r\nDuration: June-2018 to Dec-2018.Description: CHARMS means Congress Human Resources Management System is mainly for maintaining voters, office bearers and booth committee’s information. Using this application we are making teleconference, conducting surveys, IVR, SMS campaigns and other activities.\r\nRoles &amp; Responsibilities: handled the Development of Dashboard and admin panel and Reports APIs for the mobile.\r\nProject Name: CRMClient: USMRole: Developer.Environment: PHP, LARAVEL, MYSQL.Team Size: 3 \r\nDuration: Aug-2018 to April-2019.Description: Customer Relationship Management (CRM) is a strategy for managing all your company’s relationships and interactions with customers and potential customers. \r\nRoles &amp; Responsibilities: From scratch involved and understand the requirements  handled the Development of Reports related graphs and admin panel and Dashboard Reports APIs for the mobile.\r\nProject Name: HRMS.Client: USMRole: Developer.Environment: PHP, LARAVEL, MYSQL.Team Size: 4 \r\nDuration: Nov-2017 to Dec-2019.\r\nDescription: Human resource Management System (HRMS) for managing Companies and Child Company’s information, Employees info, Attendance Tracking, Apply Leaves, Travel requests, Announcements and other activities.\r\nRoles &amp; Responsibilities: From scratch involved and understand the requirements handled the Development of Complete Employee creation Module and masters graphs and admin panel and Dashboard Reports APIs for the mobile.\r\nProject Name: ZENNX.Client: USMRole: Developer.Environment: PHP, LARAVEL, MYSQL.Team Size: 5 \r\nDuration: May-2017 to Sept-2017.Description: ZennX-Retailer app and web application provides an innovative solution for pharma retailers / Chemist’s cumbersome manual order process or phone order process.\r\nOther Projects:\r\nTechRockerz (LARAVEL)\r\nWeb Services:\r\nATS\r\nHRMS\r\nCRM\r\nEducation:\r\nPost Graduate in MCA from Mathrusri Institute of PG Studies (Osmania), Hyderabad in the year 2013 secured 60%.\r\nGraduate in MCCS from Chaitanya Degree College (Kakatiya University), Hyderabad in the year 2010 secured 59%.\r\nIntermediate passed out in 2007 with an aggregate of 60%.\r\nSSC passed out in 2005 with an aggregate of 77%.\r\n                   \r\n                                                                                                                             \r\n                                                                                                                                    (SAGAR CH)', NULL, 42, 24, 0, NULL, 0, '2022-05-27 10:57:55', NULL),
(283, 570226, 1, 'Test engineer', 'uploads/resumes/2022/05/27/570226_163700_7894.docx', 'Previous TCS Interview for QA:    https://www.softwaretestingo.com/tcs-selenium-interview-questions/https://www.interviewbit.com/automation-testing-interview-questions/#will-automated-testing-make-manual-testing-obsoleteSelenium Interview Question:    Top 50 Selenium Interview Questions (2022) - javatpointAccenture Interview Question:   Accenture Selenium Company Interview Questions New 2022 (softwaretestingo.com)\r\nCapgemini Interview Question:   Talent Capgemini Selenium Bangalore Interview Questions 2022 (softwaretestingo.com)1.  Explain the locator present in the Selenium?     \r\nLocator Description Syntax (in Java)\r\nID Identify the WebElement using the ID attribute driver.findElement(By.id(“IdValue”));\r\nName Identify the WebElement using the Name attribute driver.findElement(By.name(“nameValue”));\r\nClassNameUse the Class attribute for identifying the object driver.findElement(By.className(“classValue”));\r\nLinkTextUse the text in hyperlinks to locate the WebElementdriver.findElement(By.linkText(“textofLink”));\r\nPartial LinkTextUse a part of the text in hyperlinks to locate the desired WebElementdriver.findElement(By.partialLinkText(“PartialTextofLink”));\r\nTagNameUse the TagName to locate the desired WebElementdriver.findElement(By.tagName(“htmlTag”));\r\nCssSelectorCSS used to create style rules in web page is leveraged to locate the desired WebElementdriver.findElement(By.cssSelector(“cssValue”));\r\nXPath Use XPath to locate the WebElementdriver.findElement(By.xpath(“xpathValue”));\r\n2. Explain assertions in selenium?\r\n In Selenium, Asserts are validations or checkpoints for an application. Assertions state confidently that application behavior is working as expected. One can say that Asserts in Selenium are used to validate the test cases. They help testers understand if tests have passed or failed.3. Difference between verify and assertions?\r\nIn the case of the “Assert” command, as soon as the validation fails the execution of that particular test method is stopped. Following that the test method is marked as failed. Whereas, in the case of “Verify”, the test method continues execution even after the failure of an assertion statement\r\n4.  How to handle the mouse click using Selenium?\r\n---&gt;     Action a = new Action(driver)            Webelement element = driver.findElement(By.xpath(“”));        a.contextClick(element).perform();\r\n5. What is the use of Data provider in the TestNG?\r\nTestNG comes up with DataProvider to automate the process of providing test-cases for execution. DataProvider helps with data-driven test cases that carry the same methods but can be run multiple times with different data sets. It also helps in providing complex parameters to the test methods\r\n6. Difference between the Selenium 2.0 and Selenium 3.0?\r\nThe main difference between selenium 3.0 and selenium 2.0 is that now all the major browser vendors will provide their own WebDriver implementations (Apple, Google, Microsoft, and Mozilla) in Selenium 3.0  instead of being developed by Selenium project (Selenium 2.0) and because they know their browsers better than anyone else, their WebDriver implementations can be tightly coupled to the browser, leading to a better testing experience for you.\r\n7. Which type of testing is mainly done for Automation Testing?\r\nUnit testing \r\n8. Explain OOPs concept briefly.\r\nprogramming concept that works on the principles of abstraction, encapsulation, inheritance, and polymorphism. It allows users to create objects they want and create methods to handle those objects.\r\nInheritance in Java is a mechanism in which one object acquires all the properties and behaviors of a parent object. It is an important part of  HYPERLINK \"https://www.javatpoint.com/java-oops-concepts\" OOPs\r\n(Object Oriented programming system).\r\nThe idea behind inheritance in Java is that you can create new  HYPERLINK \"https://www.javatpoint.com/object-and-class-in-java\" classes\r\nthat are built upon existing classes. When you inherit from an existing class, you can reuse methods and fields of the parent class. Moreover, you can add new methods and fields in your current class also.\r\n---&gt; Explore The Essentials Of Java In Selenium With Examples (softwaretestinghelp.com)\r\n9. What is Constructor in java.A constructor in Java is a special method that is used to initialize objects. The constructor is called when an object of a class is created. It can be used to set initial values for object attributes:\r\n10 List the keyword in python?11. What are the methods in API testing?\r\nThere are mainly 4 types of API Testing methods: GET, POST, Delete, and PUT. GET– The GET method is used to extract information from the given server using a given URI\r\n12 Difference between the SOAP and REST API?\r\nSr. No. Key REST API SOAP API\r\n1 Internal communication REST APIs uses multiple standards like HTTP, JSON, URL, and XML for data communication and transfer. SOAP APIs is largely based and uses only HTTP and XML.\r\n2 Resource requirement As REST API deploys and uses multiple standards as stated above, so it takes fewer resources and bandwidth as compared to SOAP API. On other hand Soap API requires more resource and bandwidth as it needs to convert the data in XML which increases its payload and results in the large sized file.\r\n3 Description REST API uses Web Application Description Language for describing the functionalities being offered by web services. On other hand SOAP API used Web Services Description language for the same.\r\n4 Security REST has SSL and HTTPS for security. On other hand SOAP has SSL( Secure Socket Layer) and WS-security due to which in the cases like Bank Account Password, Card Number, etc. SOAP is preferred over REST.\r\n5 Abbreviation REST stands for Representational State Transfer. On other hand SOAP stands for Simple Object Access Protocol\r\n6 Interchange REST can make use of SOAP as the underlying protocol for web services, because in the end it is just an architectural pattern. On other hand SOAP cannot make use of REST since SOAP is a protocol and REST is an architectural pattern.\r\n13. Write a program to launch the website?---&gt;package EmployeeApp;\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.JavascriptExecutor;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class Login_new_User {\r\npublic static void main(String[] args)  {\r\nSystem.setProperty(\"webdriver.chrome.driver\",\"E:\\\\RAJAN KUMAR JHA\\\\Testing\\\\Selenium\\\\chrome\\\\chromedriver.exe\");\r\nWebDriver driver = new ChromeDriver();\r\nString url = \"https://employee.hyenaapps.com/#/\";\r\n  driver.get(url);       \r\n    }\r\n}\r\n14. Explain is sampler and listener in Jmeter?---&gt; Samplers in JMeter allows JMeter to send different types of requests to a server. Samplers are the actual requests, JMeter sends to the web server under test. Each sampler (except Test Action) generates one or more sample results. The sample results have various attributes (success/fail, elapsed time, data size etc.) and can be viewed in the various listeners.       Listener allows us to view and analyze the Sampler request and response in the form of tables, graphs, trees etc. You can also save results in a file and read saved results later. You can access the sampler result in an ongoing load/stress test without waiting till end.15. Select the nth largest value in the list?       Select * From Employee\r\nORDERBY salary DESC\r\nLIMIT 1Offset n-1\r\n16. Write a syntax for for update row in SQl?\r\n       UPDATE Customers   SET ContactName = \'Alfred Schmidt\', City= \'Frankfurt\'   WHERE CustomerID = 1;17. What is RC in selenium?\r\nSelenium Remote Control (RC) was the main Selenium project that sustained for a long time before Selenium WebDriver(Selenium 2.0) came into existence. Now Selenium RC is hardly in use, as WebDriver offers more powerful features, however users can still continue to develop scripts using RC.\r\n18. What is an API?---&gt; APIs (Application programing interface) are the intermediary between two programs and allow data to be transferred. APIs are very versatile and can be used on the web databases, and operating systems.19.  What is the full form of SQL? ---&gt; Structured Query language\r\n20. Write the syntax to update the row in the SQL?---&gt;         UPDATE table_name                SET column1 = value1, column2 = value2, ...                 WHERE condition; 21. Explain Different type of join in the SQL?---&gt; A JOIN clause is used to combine rows from two or more tables, based on a related column between them.\r\nDIFFERENT TYPE OF SQL JOINs: ---SQL INNER JOIN KEYWORD:  The INNER JOIN keyword selects records that have matching values in both tables.    SYNTAX:          SELECT column_name(s)        FROM table1        INNER JOIN table2        ON table1.column_name = table2.column_name\r\n---SQL LEFT JOIN KEYWORD: The LEFT JOIN keyword returns all records from the left table (table1), and the matching records from the right table (table2). The result is 0 records from the right side, if there is no match.    SYNTAX:         SELECT column_name(s)        FROM table1        LEFT JOIN table2        ON table1.column_name = table2.column_name;\r\n---SQL RIGHT JOIN KEYWORD: The RIGHT JOIN keyword returns all records from the right table (table2), and the matching records from the left table (table1). The result is 0 records from the left side, if there is no match.    SYNTAX:        SELECT column_name(s)        FROM table1        RIGHT JOIN table2        ON table1.column_name = table2.column_name;\r\n---SQL FULL OUTER JOIN KEYWORD: The FULL OUTER JOIN keyword returns all records when there is a match in left (table1) or right (table2) table records.    SYNTAX:       SELECT column_name(s)       FROM table1       FULL OUTER JOIN table2       ON table1.column_name = table2.column_name        WHERE condition; --SQL SELF JOIN KEYWORD: A self-join is a regular join, but the table is joined with itself.    SYNTAX:      SELECT column_name(s)      FROM table1 T1, table1 T2      WHERE condition;23. Different types of Error in the API? ---&gt; 1XX --- Informational: Informational codes indicating that the request initiated by the browser is continuing.\r\nThe client has requested the server to switch the protocol. The server sends the 100 switching protocol as a response code to inform the client that it is switching to the protocol as requested by the client, which sent the message that includes the upgrade request header.          2XX --- Success: The 2xx class means that the request made by the client was received, understood, and accepted. Or we can say that the 2xx http status code represents that the Http request was successful.         3XX --- Redirection: The 3xx block is a class used for redirection. It indicates that the client needs to take some additional measures to complete the request. Here Redirection means URL forwarding is a process of providing more one URL to the page. The HTTP provides HTTP redirect response for such kind of operations.        4XX --- Client: (wrong request made by client)\r\n The server sends the 4xx HTTP response status codes to the client when some errors occur in the request made by the client. This response indicates that the browser has sent a wrong request with an error that cannot be processed by the server. To get the proper response, the client needs to send the correct request again.        5XX --- Server: (from server side) \r\n The error codes that come under the 5xx range are sent to the client when some problems occur with a server. When the client makes a request for some website, the browser sends a request to the website\'s server, and if the website\'s server is not able to serve the request, then the 5xx error code is sent to the client. These errors mainly when the server is facing some problem or unable to perform a request. The 5xx error messages represent the server-side error messages in which the website\'s server is unsuccessful in performing a request. The server-side error does not mean that problem is coming on a website, computer, or an internet connection. 24. What is selenium Grid?    Selenium Grid is a tool used to run parallel tests across different machines and different browsers simultaneously which results in minimized execution time.25. What is difference between “htpps” and “htpp”?\r\nParameter HTTP HTTPS\r\nProtocol It is hypertext transfer protocol. It is hypertext transfer protocol with secure.\r\nSecurity It is less secure as the data can be vulnerable to hackers. It is designed to prevent hackers from accessing critical information. It is secure against such attacks.\r\nPort It uses port 80 by default It was use port 443 by default.\r\nStarts with HTTP URLs begin with http:// HTTPs URLs begin with https://\r\nUsed for It’s a good fit for websites designed for information consumption like blogs. If the website needs to collect the private information such as credit card number, then it is a more secure protocol.\r\nScrambling HTTP does not scramble the data to be transmitted. That’s why there is a higher chance that transmitted information is available to hackers. HTTPS scrambles the data before transmission. At the receiver end, it descrambles to recover the original data. Therefore, the transmitted information is secure which can’t be hacked.\r\nProtocol It operates at TCP/IP level. HTTPS does not have any separate protocol. It operates using HTTP but uses encrypted TLS/SSL connection.\r\nDomain Name Validation HTTP website do not need SSL. HTTPS requires SSL certificate.\r\n( Secure Socket Layer)\r\nData encryption HTTP website doesn’t use encryption. HTTPS websites use data encryption.\r\nSearch Ranking HTTP does not improve search rankings. HTTPS helps to improve search ranking.\r\nSpeed Fast Slower than HTTP\r\nVulnerability Vulnerable to hackers It Is highly secure as the data is encrypted before it is seen across a network.\r\n  26. How to handle alerts ?driver.switchTo().alert().accept();\r\ndriver.switchTo().alert().dismiss();\r\ndriver.switchTo().alert().getText();\r\n27.How to switch window, if window name is not available?\r\nSet&lt;String&gt; windows = driver.getWindowHandles(); //[parentid,childid,subchildId]\r\nIterator&lt;String&gt;it = windows.iterator();\r\nString parentId = it.next();\r\nString childId = it.next();\r\n28.How to login by using URL?\r\nWe can do HTTP basic authentication URL with @ in password. We have to pass the credentials appended with the URL. The username and password must be added with the format − https://username:password@URL29.Describe TestNg in oneword?\r\nFramework\r\n30.D/B window handle and window handles?\r\ndriver.getWindowHandles() – It stores the set of handles for all the pages opened simultaneously.\r\ndriver.getWindowHandle() – It fetches the handle of the web page which is in focus. It gets the address of the active browser and it has a return type of String\r\n31.what is parameterizing in testing?\r\nParameterization in Selenium is a process to parameterize the test scripts in order to pass multiple data to the application at runtime. It is a strategy of execution which automatically runs test cases multiple times using different values\r\n32.what is Dataprovider in selenium?\r\nDataProvider helps with data-driven test cases that carry the same methods but can be run multiple times with different data sets. It also helps in providing complex parameters to the test method\r\n33. how to handle exeption in selenium\r\nTry-catch: This method can catch Exceptions by using a combination of the try and catch keywords. Try indicates the start of the block, and Catch is placed at the end of the try block to handle or resolve the Exception. The code that is written within the Try/Catch block is referred to as “protected code.” The following code represents the syntax of Try/Catch block –\r\ntry   {\r\n     // Some code\r\n   }\r\ncatch(Exception e)\r\n  {\r\n     // Code for Handling the exception\r\n  }\r\nMultiple catch blocks: There are various types of Exceptions, and one can expect more than one exception from a single block of code. Multiple catch blocks are used to handle every kind of Exception separately with a separate block of code. One can use more than two catch blocks, and there is no limitation on the number of catch blocks. The code below represents the syntax of multiple catch blocks –\r\ntry   {\r\n      //Some code\r\n   }\r\ncatch(ExceptionType1 e1)\r\n   {\r\n     //Code for Handling the Exception 1\r\n   }\r\ncatch(ExceptionType2 e2)\r\n   {\r\n     //Code for Handling the Exception 2\r\n   }\r\n34.Heirarchy of execution\r\n@BeforeSuite.\r\n@BeforeTest.\r\n@BeforeClass.\r\n@BeforeMethod.\r\n@Test.\r\n@AfterMethod.\r\n@AfterClass.\r\n@AfterTest.\r\n95.return type getwindow and getwindow handles.\r\nReturn type of getWindowHandle() is String while return type of getWindowHandles() is Set&lt;String&gt;. The return type is Set as window handle is always unique.\r\n1. WAP to print the below structure?\r\n            * \r\n        *  * \r\n      * * * \r\n   * * * * \r\n* * * * * \r\npackage Java_Programing;\r\npublic class Star_Pattern \r\npublic static void main(String[] args)  {\r\n      int row=5, i, j, space, spaceLimit;\r\n      spaceLimit = (row*2) - 2;\r\n      \r\n      for(i=0; i&lt;row; i++)     {\r\n         for(space=0; space&lt;spaceLimit; space++)\r\n            System.out.print(\" \");\r\n         for(j=0; j&lt;=i; j++)\r\n            System.out.print(\"* \");\r\n         System.out.print(\"\\n\");\r\n         spaceLimit = spaceLimit-2;\r\n      }}}\r\n\r\n2.  WAP to print the below structure?\r\n* \r\n* * \r\n* * * \r\n* * * * \r\n* * * * * \r\n package Java_Programing public class Star_Pattern {\r\n public static void main(String[] args){\r\n int i, j;\r\nfor(i=0; i&lt;5; i++    {\r\n  \r\n          for(j=0; j&lt;=i; j++)\r\n             System.out.print(\"* \");\r\n          System.out.print(\"\\n\");\r\n       }\r\n    }}\r\n3. WAP to print the below structure?\r\n* * * * * \r\n* * * * \r\n* * * \r\n* * \r\n* \r\n          \r\n package Java_Programing;\r\n \r\n public class Star_Pattern {\r\n \r\n public static void main(String[] args)\r\n    {\r\n       int i, j;\r\n      \r\n       for(i=5; i&gt;0; i--)\r\n       {\r\n  \r\n          for(j=0; j&lt;i; j++)\r\n             System.out.print(\"* \");\r\n          System.out.print(\"\\n\");\r\n       }\r\n    }}\r\n5. WAP to print the below structure?\r\n* * * * * \r\n* * * * \r\n* * * \r\n* * \r\n* \r\n package Java_Programing;\r\n \r\n public class Star_Pattern {\r\n public static void main (String args[])\r\n    {\r\n       int n = 5;\r\n       for (int i = 1; i&lt;=n ; i++) {\r\n          for (int j = i; j&lt;=n; j++) {\r\n             System.out.print( \"* \");\r\n          }\r\n          System.out.println();\r\n      }\r\n   }   }\r\n6. WAP to find the alphabet with upper case and lower case, Digit and white space in the given string?\r\npackage Java_Programing;\r\nimport java.util.Scanner;\r\npublic class Count_character_in_string{\r\n  public static void main(String[] args) {\r\n  \r\n  String str1;\r\n      System.out.println(\"Enter an String :: \");\r\n      Scanner sc = new Scanner(System.in);\r\n      str1 = sc.nextLine();\r\n      int count=0;\r\n      int count1= 0;\r\n      int count2 = 0;\r\n      int count3 = 0;\r\n      int count4 = 0;\r\n    \r\n      // Count of alphabet\r\n    for (int i=0;i&lt;str1.length();i++)\r\n    {\r\n       if(Character.isLetter(str1.charAt(i)))\r\n       count++;\r\n    }\r\n    \r\n // Count of Lower case alphabet\r\n    for (int i=0;i&lt;str1.length();i++)\r\n    {\r\n       if(Character.isLowerCase(str1.charAt(i)))\r\n       count1++;\r\n    }\r\n    \r\n    // Count of Upper case alphabet\r\n    for (int i=0;i&lt;str1.length();i++)\r\n    {\r\n       if(Character.isUpperCase(str1.charAt(i)))\r\n       count2++;\r\n    }\r\n    \r\n    // Count of Digits case alphabet\r\n    for (int i = 0; i &lt; str1.length(); i++)\r\n    {\r\n    if (Character.isDigit(str1.charAt(i)))\r\n    count3 ++;\r\n    }\r\n    \r\n    // Count of White space\r\n    for (int i = 0; i &lt; str1.length(); i++)\r\n    {\r\n    if (Character.isWhitespace(str1.charAt(i)))\r\n    count4 ++;\r\n    }\r\n    \r\nSystem.out.println(\"the number of toatl alphabets in the given string is:\"+count);\r\nSystem.out.println(\"the number of Lower case alphabets in the given string is:\"+count1);\r\nSystem.out.println(\"the number of Upper case alphabets in the given string is:\"+count2);\r\nSystem.out.println(\"the number of Digits case alphabets in the given string is:\"+count3);\r\nSystem.out.println(\"the number of Whitespace in the given string is:\"+count4);\r\n  }\r\n}\r\n7.  WAP to print the number whose sum is 7 in the given array?public class Main\r\n{\r\n    public static void main(String[] args) {\r\n       int sum = 7;\r\n       int arr[] = {1, 2, 3, 4, 5, 6};\r\n       int n = arr.length;\r\n       for(int i=0;i&lt;n;i++)\r\n        for (int j=0;j&lt;i; j++) {\r\n            if (sum == arr[i] + arr[j])\r\n                System.out.println(arr[i] +\",\" + arr[j]);\r\n        }\r\n    }\r\n}\r\n8.  WAP to find the given year is leap year or not?\r\npublic class Main\r\n{\r\n    public static void main(String[] args) {\r\n    int year =2020;\r\n       if ( (year%400 == 0 )|| ((year% 4 == 0) &amp;&amp; (year%100 != 0)))\r\n       System.out.println(\"leap Year\");\r\n       else \r\n       System.out.println(\"Not leap year\");\r\n       \r\n    }\r\n}\r\n9. WAP to print the link present in the web page?\r\npackage Testing;\r\nimport java.util.List;\r\nimport org.openqa.selenium.By;\r\nimport org.openqa.selenium.WebDriver;\r\nimport org.openqa.selenium.WebElement;\r\nimport org.openqa.selenium.chrome.ChromeDriver;\r\npublic class Test {\r\npublic static void main(String[] args) {\r\n\r\nSystem.setProperty(\"webdriver.chrome.driver\",\"E:\\\\RAJAN KUMAR JHA\\\\Testing\\\\Selenium\\\\chrome\\\\chromedriver.exe\");\r\nWebDriver driver = new ChromeDriver();\r\n\r\ndriver.get( \"https://www.google.co.in\");\r\nList&lt;WebElement&gt; all_links_webpage = driver.findElements(By.tagName(\"a\")); \r\nSystem.out.println(\"Total no of links Available: \" + all_links_webpage.size());\r\nint k = all_links_webpage.size();\r\nSystem.out.println(\"List of links Available: \");\r\nfor(int i=0;i&lt;k;i++)\r\n{\r\nif(all_links_webpage.get(i).getAttribute(\"href\").contains(\"google\"))\r\n{\r\nString link = all_links_webpage.get(i).getAttribute(\"href\");\r\nSystem.out.println(link);\r\n}}}}10. WAP to swap two number without using third variable?11. WAP to reverse the string?\r\n    class Reverse_String {\r\n    public static void main(String[] args) {\r\n        String str = \"Rajan\";\r\n        String nstr = \" \";\r\n      char ch;\r\n       \r\n      for (int i=0; i&lt;str.length(); i++)\r\n      {\r\n        ch= str.charAt(i); //extracts each character\r\n        nstr= ch + nstr; //adds each character in front of the existing string\r\n      }\r\n      System.out.println(\"Reversed word: \"+ nstr);\r\n    }\r\n}12. WAP to count the string in the given String?class CountSubstringInString {\r\n    public static void main(String[] args) {\r\n       String string = \"Rajan kumar jha\";\r\n      String word = \"jha\";\r\n      \r\nString temp[] = string.split(\" \");\r\nint count = 0;\r\nfor (int i = 0; i &lt; temp.length; i++) {\r\nif (word.equals(temp[i]))\r\ncount ++;\r\n}\r\nSystem.out.println(word + \" is present \"+ count +\" times in the strings.\" );\r\n    }\r\n}16. WAP to print the 1 to 100 without using for loop?public class PrintNumbers {\r\n \r\n     public static void printNum(int num) {\r\n        \r\n        //If numbers is less than or equal to 100\r\n        if(num &lt;= 100) {\r\n           System.out.print(num + \" \");\r\n           \r\n            //Increment and call printNum recursively\r\n            printNum(num+1);\r\n        }\r\n    }\r\n   \r\n     public static void main(String[] args) {\r\n        //Declare variable and assign a value 1\r\n        int n = 1;\r\n        \r\n        //call printNum method\r\n        printNum(n);\r\n    }\r\n    \r\n}', NULL, 42, 170, 0, NULL, 0, '2022-05-27 11:07:00', NULL),
(284, 570227, 9, 'UI Developer', 'uploads/resumes/2022/05/27/570227_164512_4727.docx', 'CHOPPADANDI SAGAR                                 \r\n                                                                                               Mobile No: +91-8106176863\r\n                                                                               E-mail: ch.sagar12@gmail.com\r\nCareer Objective:               To work in a challenging environment as a Software Engineer utilizing my knowledge and experience to my best in providing solutions in diverse domains and also where I can upgrade my skills all the time.\r\nTechnical skills:\r\nLanguages                   : PHP\r\nFrameworks                : Laravel\r\nWeb Technologies     : Html, Javascript, Jquery, Bootstrap\r\nDatabase                     : Mysql\r\nCMS Technologies     : Just Knowledge on Wordpress\r\nOperating System     : Windows\r\n   \r\nSummary:\r\nTechnology 4.2 years of experience in the field of Software Development and Information.\r\n3.8 years of experience in Development and Implementation of Web-based, Client/Server Applications.\r\nWorked on HRMS, CRM and US Recruiting applications\r\nWorked on Monster and Dice Job portals API’s integration in our applications\r\nExperience in application development using Php, HTML, JavaScript, Jquery and Ajax.\r\nWorked on REST Web services and knowledge on Oops concepts.\r\nExperience in Laravel frameworks and Bootstrap.\r\nKnowledge on payment gateways like PayPal.\r\nProfessional Experience:\r\nWorking as Software Engineer in USM Infrastructures Pvt Ltd, Hyderabad from October 2017 to till Now.\r\nWorked as Software Engineer in Zennx Solutions, Hyderabad from Aug 2016 to October 2017.\r\nWorked as Software Engineer in Ariscent Software Solutions, Hyderabad from Aug 2016 to October 2017.\r\nWorked as Software Engineer in Intelliarch Infotech Pvt Ltd, Hyderabad from Aug 2015 to October 2016.\r\nWorked as Internship Software Engineer in Jayam Solutions, Hyderabad from March 2014 to Mar 2015.\r\nProject Name: ATSClient: USMRole: Developer.Environment: PHP, Laravel, Mysql.Team Size: 4 \r\nDuration: July-2019 to June-2020.Description: Applicant tracking system (ATS) is recruitment software that helps you to organize and keep track of all of your job openings, resumes, candidates, clients, and contacts while letting you create a powerful yet simple hiring process.\r\nProject Name: CHARMSClient: USMRole: Developer.Environment: PHP, Laravel, Mysql.Team Size: 4 \r\nDuration: June-2018 to Dec-2018.Description: CHARMS means Congress Human Resources Management System is mainly for maintaining voters, office bearers and booth committee’s information. Using this application we are making teleconference, conducting surveys, IVR, SMS campaigns and other activities.\r\nProject Name: CRMClient: USMRole: Developer.Environment: PHP, Laravel, Mysql.Team Size: 4 \r\nDuration: Aug-2018 to April-2019.Description: Customer Relationship Management (CRM) is a strategy for managing all your company’s relationships and interactions with customers and potential customers. \r\nProject Name: HRMS.Client: USMRole: Developer.Environment: PHP, Laravel, Mysql.Team Size: 4 \r\nDuration: Nov-2017 to Dec-2019.\r\nDescription: Human resource Management System (HRMS) for managing Companies and Child Company’s information, Employees info, Attendance Tracking, Apply Leaves, Travel requests, Announcements and other activities.\r\nProject Name: Zennx.Client: USMRole: Developer.Environment: PHP, Laravel, Mysql.Team Size: 4 \r\nDuration: May-2017 to Sept-2017.Description: ZennX-Retailer app and web application provides an innovative solution for pharma retailers / Chemist’s cumbersome manual order process or phone order process.\r\nOther Projects:\r\nTechRockerz (Laravel)\r\nWeb Services:\r\nATSHRMS\r\nCRM\r\nEducation:\r\nPost Graduate in MCA from Mathrusri Institute of PG Studies (Osmania), Hyderabad in the year 2013 secured 60%.\r\nGraduate in MCCS from Chaitanya Degree College (Kakatiya University), Hyderabad in the year 2010 secured 59%.\r\nIntermediate passed out in 2007 with an aggregate of 60%.\r\nSSC passed out in 2005 with an aggregate of 77%.\r\n                   \r\n                                                                                                                             \r\n                                                                                                                                    (SAGAR CH)', NULL, 42, 174, 0, NULL, 0, '2022-05-27 11:15:12', NULL),
(285, 570228, 9, 'UI Developer', 'uploads/resumes/2022/05/27/570228_164632_1252.docx', 'CHOPPADANDI SAGAR                                 \r\n                                                                                               Mobile No: +91-8106176863\r\n                                                                               E-mail: ch.sagar12@gmail.com\r\nCareer Objective:               To work in a challenging environment as a Software Engineer utilizing my knowledge and experience to my best in providing solutions in diverse domains and also where I can upgrade my skills all the time.\r\nTechnical skills:\r\nLanguages                   : PHP\r\nFrameworks                : Laravel\r\nWeb Technologies     : Html, Javascript, Jquery, Bootstrap\r\nDatabase                     : Mysql\r\nCMS Technologies     : Just Knowledge on Wordpress\r\nOperating System     : Windows\r\n   \r\nSummary:\r\nTechnology 4.2 years of experience in the field of Software Development and Information.\r\n3.8 years of experience in Development and Implementation of Web-based, Client/Server Applications.\r\nWorked on HRMS, CRM and US Recruiting applications\r\nWorked on Monster and Dice Job portals API’s integration in our applications\r\nExperience in application development using Php, HTML, JavaScript, Jquery and Ajax.\r\nWorked on REST Web services and knowledge on Oops concepts.\r\nExperience in Laravel frameworks and Bootstrap.\r\nKnowledge on payment gateways like PayPal.\r\nProfessional Experience:\r\nWorking as Software Engineer in USM Infrastructures Pvt Ltd, Hyderabad from October 2017 to till Now.\r\nWorked as Software Engineer in Zennx Solutions, Hyderabad from Aug 2016 to October 2017.\r\nWorked as Software Engineer in Ariscent Software Solutions, Hyderabad from Aug 2016 to October 2017.\r\nWorked as Software Engineer in Intelliarch Infotech Pvt Ltd, Hyderabad from Aug 2015 to October 2016.\r\nWorked as Internship Software Engineer in Jayam Solutions, Hyderabad from March 2014 to Mar 2015.\r\nProject Name: ATSClient: USMRole: Developer.Environment: PHP, Laravel, Mysql.Team Size: 4 \r\nDuration: July-2019 to June-2020.Description: Applicant tracking system (ATS) is recruitment software that helps you to organize and keep track of all of your job openings, resumes, candidates, clients, and contacts while letting you create a powerful yet simple hiring process.\r\nProject Name: CHARMSClient: USMRole: Developer.Environment: PHP, Laravel, Mysql.Team Size: 4 \r\nDuration: June-2018 to Dec-2018.Description: CHARMS means Congress Human Resources Management System is mainly for maintaining voters, office bearers and booth committee’s information. Using this application we are making teleconference, conducting surveys, IVR, SMS campaigns and other activities.\r\nProject Name: CRMClient: USMRole: Developer.Environment: PHP, Laravel, Mysql.Team Size: 4 \r\nDuration: Aug-2018 to April-2019.Description: Customer Relationship Management (CRM) is a strategy for managing all your company’s relationships and interactions with customers and potential customers. \r\nProject Name: HRMS.Client: USMRole: Developer.Environment: PHP, Laravel, Mysql.Team Size: 4 \r\nDuration: Nov-2017 to Dec-2019.\r\nDescription: Human resource Management System (HRMS) for managing Companies and Child Company’s information, Employees info, Attendance Tracking, Apply Leaves, Travel requests, Announcements and other activities.\r\nProject Name: Zennx.Client: USMRole: Developer.Environment: PHP, Laravel, Mysql.Team Size: 4 \r\nDuration: May-2017 to Sept-2017.Description: ZennX-Retailer app and web application provides an innovative solution for pharma retailers / Chemist’s cumbersome manual order process or phone order process.\r\nOther Projects:\r\nTechRockerz (Laravel)\r\nWeb Services:\r\nATSHRMS\r\nCRM\r\nEducation:\r\nPost Graduate in MCA from Mathrusri Institute of PG Studies (Osmania), Hyderabad in the year 2013 secured 60%.\r\nGraduate in MCCS from Chaitanya Degree College (Kakatiya University), Hyderabad in the year 2010 secured 59%.\r\nIntermediate passed out in 2007 with an aggregate of 60%.\r\nSSC passed out in 2005 with an aggregate of 77%.\r\n                   \r\n                                                                                                                             \r\n                                                                                                                                    (SAGAR CH)', NULL, 42, 174, 0, NULL, 0, '2022-05-27 11:16:32', NULL),
(286, 570229, 9, 'UI Developer', 'uploads/resumes/2022/05/27/570229_164641_2839.docx', 'CHOPPADANDI SAGAR                                 \r\n                                                                                               Mobile No: +91-8106176863\r\n                                                                               E-mail: ch.sagar12@gmail.com\r\nCareer Objective:               To work in a challenging environment as a Software Engineer utilizing my knowledge and experience to my best in providing solutions in diverse domains and also where I can upgrade my skills all the time.\r\nTechnical skills:\r\nLanguages                   : PHP\r\nFrameworks                : Laravel\r\nWeb Technologies     : Html, Javascript, Jquery, Bootstrap\r\nDatabase                     : Mysql\r\nCMS Technologies     : Just Knowledge on Wordpress\r\nOperating System     : Windows\r\n   \r\nSummary:\r\nTechnology 4.2 years of experience in the field of Software Development and Information.\r\n3.8 years of experience in Development and Implementation of Web-based, Client/Server Applications.\r\nWorked on HRMS, CRM and US Recruiting applications\r\nWorked on Monster and Dice Job portals API’s integration in our applications\r\nExperience in application development using Php, HTML, JavaScript, Jquery and Ajax.\r\nWorked on REST Web services and knowledge on Oops concepts.\r\nExperience in Laravel frameworks and Bootstrap.\r\nKnowledge on payment gateways like PayPal.\r\nProfessional Experience:\r\nWorking as Software Engineer in USM Infrastructures Pvt Ltd, Hyderabad from October 2017 to till Now.\r\nWorked as Software Engineer in Zennx Solutions, Hyderabad from Aug 2016 to October 2017.\r\nWorked as Software Engineer in Ariscent Software Solutions, Hyderabad from Aug 2016 to October 2017.\r\nWorked as Software Engineer in Intelliarch Infotech Pvt Ltd, Hyderabad from Aug 2015 to October 2016.\r\nWorked as Internship Software Engineer in Jayam Solutions, Hyderabad from March 2014 to Mar 2015.\r\nProject Name: ATSClient: USMRole: Developer.Environment: PHP, Laravel, Mysql.Team Size: 4 \r\nDuration: July-2019 to June-2020.Description: Applicant tracking system (ATS) is recruitment software that helps you to organize and keep track of all of your job openings, resumes, candidates, clients, and contacts while letting you create a powerful yet simple hiring process.\r\nProject Name: CHARMSClient: USMRole: Developer.Environment: PHP, Laravel, Mysql.Team Size: 4 \r\nDuration: June-2018 to Dec-2018.Description: CHARMS means Congress Human Resources Management System is mainly for maintaining voters, office bearers and booth committee’s information. Using this application we are making teleconference, conducting surveys, IVR, SMS campaigns and other activities.\r\nProject Name: CRMClient: USMRole: Developer.Environment: PHP, Laravel, Mysql.Team Size: 4 \r\nDuration: Aug-2018 to April-2019.Description: Customer Relationship Management (CRM) is a strategy for managing all your company’s relationships and interactions with customers and potential customers. \r\nProject Name: HRMS.Client: USMRole: Developer.Environment: PHP, Laravel, Mysql.Team Size: 4 \r\nDuration: Nov-2017 to Dec-2019.\r\nDescription: Human resource Management System (HRMS) for managing Companies and Child Company’s information, Employees info, Attendance Tracking, Apply Leaves, Travel requests, Announcements and other activities.\r\nProject Name: Zennx.Client: USMRole: Developer.Environment: PHP, Laravel, Mysql.Team Size: 4 \r\nDuration: May-2017 to Sept-2017.Description: ZennX-Retailer app and web application provides an innovative solution for pharma retailers / Chemist’s cumbersome manual order process or phone order process.\r\nOther Projects:\r\nTechRockerz (Laravel)\r\nWeb Services:\r\nATSHRMS\r\nCRM\r\nEducation:\r\nPost Graduate in MCA from Mathrusri Institute of PG Studies (Osmania), Hyderabad in the year 2013 secured 60%.\r\nGraduate in MCCS from Chaitanya Degree College (Kakatiya University), Hyderabad in the year 2010 secured 59%.\r\nIntermediate passed out in 2007 with an aggregate of 60%.\r\nSSC passed out in 2005 with an aggregate of 77%.\r\n                   \r\n                                                                                                                             \r\n                                                                                                                                    (SAGAR CH)', NULL, 42, 174, 0, NULL, 0, '2022-05-27 11:16:41', NULL),
(287, 570230, 1, 'PHP Developer', 'uploads/resumes/2022/05/30/570230_153250_2915.docx', 'CHOPPADANDI SAGAR                                 \r\n                                                                                               Mobile No: +91-8106176863\r\n                                                                               E-mail: sagarhimic@gmail.com\r\nCareer Objective:               To work in a challenging environment as a Software Engineer utilizing my knowledge and experience to my best in providing solutions in diverse domains and also where I can upgrade my skills all the time.\r\nTechnical skills:\r\nLanguages                   : PHP\r\nFrameworks               : LARAVEL, MVC, Oops, \r\nTechnologies              : Html5 JavaScript, JQuery, Bootstrap, Ajax\r\nDatabase                     : MYSQL\r\nOperating System      : Windows 7/8.1/10\r\nWeb services           : APIs, JSON\r\nIDEs           : Eclipse, Notepad++, Xampp\r\nThird Party Integrations : Dice Profiles, Monster, SMS Gateways, AWS for SES\r\n   \r\nSummary:\r\nTechnology 7 years of experience in the field of Software Development and Information.\r\n5 years of experience in Development and Implementation of Web-based, Client/Server Applications.\r\nWorked on HRMS, CRM, AMOEBA and US Recruiting applications\r\nWorked on Monster and Dice Job portals API’s integration in our applications\r\nExperience in application development using PHP, HTML, JavaScript, JQuery and Ajax.\r\nWorked on REST Web services and knowledge on Oops concepts.\r\nExperience in LARAVEL frameworks and Bootstrap.\r\nKnowledge on payment gateways like PayPal.\r\nKnowledge on AWS for SES (Simple Email Service) Integration on our Application.\r\nProfessional Experience:\r\nWorking as Software Engineer in USM Business Systems, Hyderabad from November 2020 to till Now.\r\nWorking as Software Engineer in USM Infrastructures PVT LTD, Hyderabad from October 2017 to October 2020.\r\nWorked as Software Engineer in Zennx Solutions, Hyderabad from Aug 2016 to October 2017.\r\nWorked as Software Engineer in Ariscent Software Solutions, Hyderabad from March 2016 to Aug 2016.\r\nWorked as Software Engineer in InTeleArch Info Techlogies Pvt Ltd, Hyderabad from March 2015 to November 2016.\r\nWorked as Internship Software Engineer in Jayam Solutions, Hyderabad from March 2014 to Feb 2015.\r\nProject Name: ATS(Application Tracking System)Client: USMRole: Developer.Environment: PHP, LARAVEL, MYSQL.Team Size: 3 \r\nDuration: July-2019 to Till.Description: Applicant tracking system (ATS) is recruitment software that helps you to organize and keep track of all of your job openings, resumes, candidates, clients, and contacts while letting you create a powerful yet simple hiring process.\r\nRoles &amp; Responsibilities: Inputs from management and assign to requirements to team, handled the Development of Dashboard and admin panel and APIs for the Mobile.\r\nProject Name: CHARMSClient: USMRole: Developer.Environment: PHP, LARAVEL, MYSQL.Team Size: 4 \r\nDuration: June-2018 to Dec-2018.Description: CHARMS means Congress Human Resources Management System is mainly for maintaining voters, office bearers and booth committee’s information. Using this application we are making teleconference, conducting surveys, IVR, SMS campaigns and other activities.\r\nRoles &amp; Responsibilities: handled the Development of Dashboard and admin panel and Reports APIs for the mobile.\r\nProject Name: CRMClient: USMRole: Developer.Environment: PHP, LARAVEL, MYSQL.Team Size: 3 \r\nDuration: Aug-2018 to April-2019.Description: Customer Relationship Management (CRM) is a strategy for managing all your company’s relationships and interactions with customers and potential customers. \r\nRoles &amp; Responsibilities: From scratch involved and understand the requirements  handled the Development of Reports related graphs and admin panel and Dashboard Reports APIs for the mobile.\r\nProject Name: HRMS.Client: USMRole: Developer.Environment: PHP, LARAVEL, MYSQL.Team Size: 4 \r\nDuration: Nov-2017 to Dec-2019.\r\nDescription: Human resource Management System (HRMS) for managing Companies and Child Company’s information, Employees info, Attendance Tracking, Apply Leaves, Travel requests, Announcements and other activities.\r\nRoles &amp; Responsibilities: From scratch involved and understand the requirements handled the Development of Complete Employee creation Module and masters graphs and admin panel and Dashboard Reports APIs for the mobile.\r\nProject Name: ZENNX.Client: USMRole: Developer.Environment: PHP, LARAVEL, MYSQL.Team Size: 5 \r\nDuration: May-2017 to Sept-2017.Description: ZennX-Retailer app and web application provides an innovative solution for pharma retailers / Chemist’s cumbersome manual order process or phone order process.\r\nOther Projects:\r\nTechRockerz (LARAVEL)\r\nWeb Services:\r\nATS\r\nHRMS\r\nCRM\r\nEducation:\r\nPost Graduate in MCA from Mathrusri Institute of PG Studies (Osmania), Hyderabad in the year 2013 secured 60%.\r\nGraduate in MCCS from Chaitanya Degree College (Kakatiya University), Hyderabad in the year 2010 secured 59%.\r\nIntermediate passed out in 2007 with an aggregate of 60%.\r\nSSC passed out in 2005 with an aggregate of 77%.\r\n                   \r\n                                                                                                                             \r\n                                                                                                                                    (SAGAR CH)', NULL, 41, 24, 0, NULL, 0, '2022-05-30 10:02:50', NULL),
(288, 570231, NULL, '', 'uploads/resumes/2022/06/17/570231_151704_3427.docx', '', '', 46, 145, 0, NULL, 0, '2022-06-17 09:47:04', NULL),
(289, 570233, NULL, '', 'uploads/resumes/2022/06/17/570233_152414_2646.docx', '', '', 0, 94, 0, NULL, 0, '2022-06-17 09:54:14', NULL);
INSERT INTO `resumes` (`id`, `profile_id`, `total_exp`, `profile_title`, `filename`, `resume`, `location`, `emp_type_id`, `visa_type_id`, `in_place`, `in_block_list`, `in_hotlist`, `created_at`, `updated_at`) VALUES
(290, 570237, NULL, '', 'uploads/resumes/2022/06/17/570237_160236_2966.docx', '', '', 43, 145, 0, NULL, 0, '2022-06-17 10:32:36', NULL),
(291, 570119, NULL, '', 'uploads/resumes/2022/06/17/570119_182046_2408.docx', '', '', 0, 0, 0, NULL, 0, '2022-06-17 12:50:46', NULL),
(292, 570239, NULL, '', 'uploads/resumes/2022/06/17/570239_182301_8560.docx', '', '', 0, 0, 0, NULL, 0, '2022-06-17 12:53:01', NULL),
(293, 570240, NULL, '', 'uploads/resumes/2022/06/17/570240_182331_9267.docx', '', '', 0, 0, 0, NULL, 0, '2022-06-17 12:53:31', NULL),
(294, 570241, NULL, '', 'uploads/resumes/2022/06/17/570241_183511_1920.docx', '', '', 42, 173, 0, NULL, 0, '2022-06-17 13:05:11', NULL),
(295, 570242, NULL, '', 'uploads/resumes/2022/06/17/570242_184151_6067.docx', '', '', 0, 146, 0, NULL, 0, '2022-06-17 13:11:51', NULL),
(296, 570243, NULL, '', 'uploads/resumes/2022/06/17/570243_190607_6661.docx', '', '', 41, 173, 0, NULL, 0, '2022-06-17 13:36:07', NULL),
(297, 570244, NULL, '', 'uploads/resumes/2022/06/17/570244_190754_5434.docx', '', '', 41, 173, 0, NULL, 0, '2022-06-17 13:37:54', NULL),
(298, 570245, NULL, '', 'uploads/resumes/2022/06/17/570245_190943_7557.docx', '', '', 42, 24, 0, NULL, 0, '2022-06-17 13:39:43', NULL),
(299, 570246, NULL, '', 'uploads/resumes/2022/06/17/570246_191158_804.docx', '', '', 41, 24, 0, NULL, 0, '2022-06-17 13:41:58', NULL),
(300, 570247, NULL, '', 'uploads/resumes/2022/06/17/570247_191715_7616.docx', '', '', 46, 0, 0, NULL, 0, '2022-06-17 13:47:15', NULL),
(301, 570248, NULL, '', 'uploads/resumes/2022/06/20/570248_162615_9744.docx', '', '', 41, 173, 0, NULL, 0, '2022-06-20 10:56:15', NULL),
(302, 570250, NULL, '', 'uploads/resumes/2022/06/20/570250_171042_274.docx', '', '', 42, 0, 0, NULL, 0, '2022-06-20 11:40:42', NULL),
(303, 570253, 7, 'PHP Developer', 'uploads/resumes/2022/07/25/570253_142830_3027.pdf', 'Acknowledgement Number:933482180220722 Date of filing:22-07-2022 BGEPC0744G0193348218022072273628B2AAE4656F8926F3E4C0C394AE8D61B1969 System Generated Barcode/QR Code INDIAN INCOME TAX RETURN ACKNOWLEDGEMENT [Where the data of the Return of Income in Form ITR-1 (SAHAJ), ITR-2, ITR-3, ITR-4(SUGAM), ITR-5, ITR-6, ITR-7 filed and verified] (Please see Rule 12 of the Income-tax Rules, 1962) Assessment Year 2022-23 PAN BGEPC0744G Name SAGAR CHOPPADANDI Address 1-61-1 , botla vanaparthy , Botlavanaparthy , KARIM NAGAR , Botlavanaparthi B.O , 36-Telangana , 91-India , 505187 Status Individual Form Number ITR-1 Filed u/s 139(1) Return filed on or before due date e-Filing Acknowledgement Number 933482180220722 Current Year business loss, if any 1 0 Total Income 473310 Book Profit under MAT, where applicable 2 0 Adjusted Total Income under AMT, where applicable 3 0 Net tax payable 4 0 Interest and Fee Payable 5 0 Total tax, interest and Fee payable 6 0 Taxes Paid 7 0 (+) Tax Payable /(-) Refundable (6-7) 8 0 Accreted Income as per section 115TD 9 0 Additional Tax payable u/s 115TD 10 0 Interest payable u/s 115TE 11 0 Additional Tax and interest payable 12 0 Tax and interest paid 13 0 (+) Tax Payable /(-) Refundable (12-13) 14 0 Income Tax Return submitted electronically on 22-07-2022 20:49:46 from IP address 223.185.94.99 and verified by SAGAR CHOPPADANDI having PAN BGEPC0744G on 22-07-2022 20:49:40 using paper ITR-Verification Form /Electronic Verification Code XUX7KPFSMI generated through Aadhaar OTP mode DO NOT SEND THIS ACKNOWLEDGEMENT TO CPC, BENGALURU', NULL, 41, 172, 0, NULL, 0, '2022-07-25 08:58:30', NULL),
(304, 570255, 13, 'PHP developer', 'uploads/resumes/2022/10/26/570255_181515_6471.doc', '\rUSM BUSINESS SYSTEMS \r\rNEW EMPLOYEE DOCUMENTS CHECKLIST\r(List of forms to be collected from the individual before issuing Appointment Letter and Joining Formalities)\r\r\r\r\rPART (A)\r\rLatest CV											[	]	\rAddress Proof of Residence (Temporary / Permanent)					[	]\rCopies of Educational Qualifications duly verified and singed				[	]\r\rCopies of Experience Certificate and salary slip of last drawn pay, Relieving letter. 	[	] \rPAN details (In case of Tax Assesse)							[	]\r\rPART (B) - Joining Formalities\r\rDuplicate copy of the offer letter and appointment letter duly signed by the candidate as a token of acceptance										[	]\rJoining Report										[	]\rPersonal Profile Form									[	]\rEmployee Agreement signing as agreed							[	]\rPF / ESI Nomination forms									[	]\rEmployee Self Declaration of Criminal Background					[	]\rMember?s Photograph (4 Passport Size Photos)						[	]\rTemporary ID card Issuing / Arrangement made for permanent ID Card.		[	]\rBank account details (opened with ICICI for salary purpose)				[	]\rIntimation to IT Dept for Official Email ID and Login credentials.				[	]\rIntimation to Operations dept for arranging Business cards.				[	]\rIntimation to concerned Insurance authority for inclusion of new entrant particulars in Contributory Medi-claim Policy (employee optional basis for Non-ESI).				[	]\r\r\r\r\r---------------------------------------------\rHR Signature', NULL, 41, 24, 0, NULL, 0, '2022-10-26 12:45:15', NULL),
(305, 570256, 17, 'android', 'uploads/resumes/2022/12/13/570256_144411_7747.docx', 'N. Raghava Sai Nitish \r\nTest Engineer |+91-7989383108 |nandurinitish@gmail.com \r\n \r\nSummary: \r\n \r\n1.11 years of experience in Software Testing of various enterprise applications. \r\nExtensive experience on testing web applications using Selenium WebDriver, TestNG \r\nExtensive experience in System integration testing methodologies \r\nExperience in Mobile testing using tablets and Iphone \r\nExcellent experience in all kind of testing: Integration Testing, Manual Testing, API Testing, Black \r\nBox Testing, Functional Testing, Smoke Testing and Regression Testing  \r\nExtensive experience in writing test plans, test cases, and test design specifications \r\nGood experience of projects using SDLC processes, Iterative Waterfall models as well as Agile Scrum methodologies. \r\nGood knowledge of test management tools like Jira, Quality Center, Bugzilla \r\nExperience in working on Onshore – Onsite model. Interacted with the offshore team for the project execution. \r\nIn-depth knowledge of automated testing tools (Selenium Web driver) and defect tracking systems.  \r\nStrong communication, analytical and problem-solving skills. \r\n \r\nEducation: \r\n \r\nB. Tech from JNTU Hyderabad, India: 2020  \r\n \r\nTechnical Skills: \r\n \r\nLanguages   Java \r\nWeb Testing  Selenium-WebDriver, TestNG, Cucumber framework \r\nOperating System  Windows 2000/XP/7, Linux \r\nTools and Utilities  Test Director, Quality Center, JIRA, Test Tracker, Bugzilla \r\nTesting \r\n \r\nEmployment History: \r\n \r\nProject – ETO ,HRMS Application  Integration Testing, Web application Testing,  \r\nBlack Box Testing, GUI Testing, User Acceptance \r\nTesting (UAT), Manual Testing, Functional  \r\nTesting, Smoke Testing, Regression Testing  \r\nMobile application testing, writing and executing Test cases \r\nRole: Senior Test Engineer       Oct 2021 – present \r\nClient: ETO grupee Germany \r\nOrganization name- USM business systems, \r\nHyderabad \r\nTools/Tech: Selenium WebDriver, Java, Jira \r\n \r\nRoles and Responsibility: \r\nResponsible for testing different modules and component parts of the application \r\nHandled responsibilities of identifying unexpected issues after the integration of different modules. \r\nWorked to improve QA review process were worked as BA and QA both. \r\nCollaborated with the scrum team members to develop agile testing strategies \r\nResponsible for system testing, regression testing, negative testing  \r\nMember of QA team and actively participated in Scrum Team meeting.  \r\nAs an agile tester, responsible for estimating the velocity of testing effort for each user story. \r\n4116274-27083Good experience with the automation tool “Selenium Web driver”  Very good in writing test scripts (both manual and automation) \r\n \r\nProject: CSP, RO &amp; Big basket \r\nRole: Test Lead         Feb 2021 – Oct 2021 \r\nClient: US military \r\nOrganization name- Idea Entity \r\nTools/Tech: Selenium WebDriver, Jira, TestNG, Jenkins, Maven \r\n \r\nRoles and Responsibility: \r\nResponsible for testing different modules and component parts of the application \r\nWorked as Full stack QA engineer \r\nResponsible for system testing \r\nMember of QA team and actively participated in Scrum Team meeting.  \r\nResponsible for creating automation script using Selenium WebDriver  \r\nResponsible for creating automation framework Responsible for leading QA team members \r\n \r\nRole: Production Engineer       Oct 2020 – Feb 2021 \r\nClient: Harshini EPC Pvt Ltd. \r\n \r\nRoles and Responsibility: \r\n \r\nL&amp;T – involved in production, quality and dispatch \r\nNTPC – involved in production, quality and dispatch \r\nIsro- involved in only dispatch', NULL, 41, 170, 0, NULL, 0, '2022-12-13 09:14:11', NULL),
(306, 570259, 13, 'PHP Developer', 'uploads/resumes/2023/04/06/570259_142630_1155.docx', 'CHOPPADANDI SAGAR                                 \r\n                                                                                               Mobile No: +91-8106176863\r\n                                                                               E-mail: sagarhimic@gmail.com\r\nCareer Objective:               To work in a challenging environment as a Software Engineer utilizing my knowledge and experience to my best in providing solutions in diverse domains and also where I can upgrade my skills all the time.\r\nTechnical skills:\r\nLanguages                   : PHP\r\nFrameworks               : LARAVEL, MVC, OOPS, \r\nTechnologies              : Html5, JavaScript, jQuery, Bootstrap, Ajax\r\nBasic Technologies    : Angular 13\r\nDatabase                     : MYSQL\r\nOperating System      : Windows 7/8.1/10\r\nWeb services           : APIs, JSON\r\nIDEs           : Eclipse, Notepad++, XAMPP, Visual Studio\r\nThird Party Integrations: Dice, Monster, SMS Gateways, AWS for SES\r\n   \r\nSummary:\r\nTechnology 7 years of experience in the field of Software Development and Information.\r\n6 years of experience in Development and Implementation of Web-based, Client/Server Applications.\r\nExperience in LARAVEL frameworks and Bootstrap.\r\nWorked on HRMS, CRM, AMOEBA(ATS), CHARMS and US Recruiting applications\r\nWorked on Monster and Dice Job portals API’s integration in our applications\r\nExperience in application development using PHP, HTML, JavaScript, jQuery and Ajax and Angular\r\nWorked on REST Web services and knowledge on OOPS concepts.\r\nKnowledge on payment gateways like PayPal.\r\nKnowledge on AWS for SES (Simple Email Service) Integration on our Application.\r\nProfessional Experience:\r\nWorking as Software Engineer in USM Business Systems, Hyderabad from November 2020 to till Now.\r\nWorking as Software Engineer in USM Infrastructures PVT LTD, Hyderabad from October 2017 to October 2020.\r\nWorked as Software Engineer in Zennx Solutions, Hyderabad from Aug 2016 to October 2017.\r\nWorked as Software Engineer in Ariscent Software Solutions, Hyderabad from March 2016 to Aug 2016.\r\nWorked as Software Engineer in InTeleArch Info Techlogies Pvt Ltd, Hyderabad from March 2015 to November 2016.\r\nWorked as Internship Software Engineer in Jayam Solutions, Hyderabad from March 2014 to Feb 2015.\r\nProject Name: AMOEBA (ATS- Application Tracking System) Client: USMRole: Developer.Environment: PHP, LARAVEL, MYSQL.Team Size: 3 \r\nDuration: July-2019 to Till.Description: Applicant tracking system (ATS) is recruitment software that helps you to organize and keep track of all of your job openings, resumes, candidates, clients, and contacts while letting you create a powerful yet simple hiring process.\r\nRoles &amp; Responsibilities: Inputs from management and assign to requirements to team, handled the Development of Dashboard and admin panel and APIs for the Mobile.\r\nProject Name: CHARMSClient: USMRole: Developer.Environment: PHP, LARAVEL, MYSQL and Angular 13Team Size: 4 \r\nDuration: June-2018 to Dec-2018.Description: CHARMS means Congress Human Resources Management System is mainly for maintaining voters, office bearers and booth committee’s information. Using this application we are making teleconference, conducting surveys, IVR, SMS campaigns and other activities.\r\nRoles &amp; Responsibilities: handled the Development of Dashboard and admin panel and Reports APIs for the mobile.\r\nProject Name: CRMClient: USMRole: Developer.Environment: PHP, LARAVEL, MYSQL.Team Size: 3 \r\nDuration: Aug-2018 to April-2019.Description: Customer Relationship Management (CRM) is a strategy for managing all your company’s relationships and interactions with customers and potential customers. \r\nRoles &amp; Responsibilities: From scratch involved and understand the requirements handled the Development of Reports related graphs and admin panel and Dashboard Reports APIs for the mobile.\r\nProject Name: HRMS.Client: USMRole: Developer.Environment: PHP, LARAVEL, MYSQL.Team Size: 4 \r\nDuration: Nov-2017 to Dec-2019.\r\nDescription: Human resource Management System (HRMS) for managing Companies and Child Company’s information, Employees info, Attendance Tracking, Apply Leaves, Travel requests, Announcements and other activities.\r\nRoles &amp; Responsibilities: From scratch involved and understand the requirements handled the Development of Complete Employee creation Module and master’s graphs and admin panel and Dashboard Reports APIs for the mobile.\r\nProject Name: ZENNX.Client: USMRole: Developer.Environment: PHP, LARAVEL, MYSQL.Team Size: 5 \r\nDuration: May-2017 to Sept-2017.Description: ZennX-Retailer app and web application provides an innovative solution for pharma retailers / Chemist’s cumbersome manual order process or phone order process.\r\nOther Projects:\r\nTechRockerz (LARAVEL &amp; MYSQL)\r\nUSM Amigo (LARAVEL &amp; MYSQL)\r\nWeb Services:\r\nATS(Amoeba)\r\nHRMS\r\nCRM\r\nEducation:\r\nPost Graduate in MCA from MATHRUSRI Institute of PG Studies (Osmania), Hyderabad in the year 2013 secured 60%.\r\nGraduate in MCCS from Chaitanya Degree College (Kakatiya University), Hyderabad in the year 2010 secured 59%.\r\nIntermediate passed out in 2007 with an aggregate of 60%.\r\nSSC passed out in 2005 with an aggregate of 77%.\r\n                   \r\n                                                                                                                             \r\n                                                                                                                                    (SAGAR CH)', NULL, 41, 24, 0, NULL, 0, '2023-04-06 21:26:30', NULL),
(307, 570260, 7, 'PHP Developer', 'uploads/resumes/2023/04/18/570260_180830_3366.docx', 'Job Duties Team Lead (Software Developer) USM Business Systems\r\nJob Duties &amp; Responsibilities:\r\nLead a team of software engineers in designing, developing, and testing software applications\r\nEnsure that software development projects are completed on time, within budget, and meet quality standards\r\nWork with other departments to ensure that software development projects align with business goals and objectives\r\nDevelop and maintain project plans, timelines, and budgets\r\nCommunicate project status and progress to stakeholders\r\nProvide technical guidance and support to the software engineering team\r\nConduct code reviews and ensure that coding standards are followed\r\nCollaborate with other teams to ensure that software development projects integrate with other systems and applications\r\nIdentify and mitigate risks associated with software development projects\r\nStay current with emerging technologies and industry trends\r\nProjects: HRMS (Human Resource Management):\r\n1. Attendance Management\r\nHRMS (Human Resource Management System) Attendance Module is a software application designed to automate the process of tracking and managing employee attendance. The module is a part of the HRMS system and helps HR personnel to monitor employee attendance, time-offs, leaves, and absences.\r\nThe Attendance Module is integrated with time-tracking devices, such as biometric scanners, card swiping machines, and web applications, to record employee attendance. It captures employee check-in and check-out time and updates the attendance records in real-time.\r\nThe module can generate various attendance reports, including daily, weekly, monthly, and annual attendance reports. These reports can be used to monitor employee attendance and punctuality, calculate overtime and other entitlements, and generate payroll.\r\nThe HRMS Attendance Module also allows HR personnel to manage employee time-off requests and leave applications. Employees can apply for time-offs and leaves using the module, and HR personnel can approve or reject them based on company policies.\r\nAdditionally, the Attendance Module can integrate with other HRMS modules such as Payroll, Employee Self-Service, and Performance Management to provide a comprehensive HR management solution.\r\nIn summary, the HRMS Attendance Module helps organizations to:\r\nImplementing Automate the process of employee attendance tracking\r\nImplementing Monitor employee attendance, punctuality, and absenteeism\r\nImplementing Manage employee time-off requests and leave applications\r\nImplementing Generate various attendance reports\r\nImplementing Calculate overtime and other entitlements\r\nImplementing Integrate with other HRMS modules for a comprehensive HR management solution.\r\n2. Leave  ManagementTop of Form\r\nThe Leaves module in refers to the software component that manages employee leave requests, approvals, and tracking. This module helps organizations to streamline and automate their leave management processes, which can be time-consuming and prone to errors when done manually.\r\nThe Leaves module typically includes features such as:\r\nLeave request management: Employees can submit leave requests through the system, specifying the type of leave, dates, and reason.\r\nApproval workflows: Managers or HR personnel can approve or reject leave requests, and the system can route requests to the appropriate approver based on organizational hierarchy or pre-defined rules.\r\nLeave balances and accruals: The system tracks employees\' available leave balances, and may automatically accrue leave based on pre-defined rules such as seniority or employment status.\r\nReporting and analytics: The module may provide reports and dashboards to help managers and HR personnel track leave usage and trends, identify patterns of absenteeism, and plan for staffing needs.\r\nIntegration with payroll: The Leaves module may integrate with the organization\'s payroll system to ensure accurate calculation of pay and deductions related to leaves taken.\r\nBy using a Leaves module in an HRMS, organizations can improve the efficiency and accuracy of their leave management processes, while also providing employees with a user-friendly and convenient way to request and track their leave.\r\nTop of Form\r\nBottom of Form\r\nBottom of Form\r\n3. Employee  ManagementTop of Form\r\nAn employee module is a component that allows organizations to manage their employee information effectively. The module typically includes features such as employee records management, attendance tracking, payroll management, and performance evaluation.\r\nHere are some of the key features of an employee module in an HRMS:\r\nEmployee records management: This feature allows HR administrators to maintain and update employee records, including personal information, job history, and other relevant details.\r\nAttendance tracking: The attendance tracking feature allows employers to monitor employee attendance, time off requests, and other scheduling-related matters.\r\nPayroll management: This feature allows employers to manage employee salaries, tax deductions, and other financial matters related to compensation.\r\nPerformance evaluation: The performance evaluation feature allows managers to evaluate employee performance, track progress, and provide feedback to employees.\r\nBenefits management: The benefits management feature allows employers to manage employee benefits, such as health insurance, retirement plans, and other related benefits.\r\nOverall, an employee module in an HRMS is a comprehensive tool that helps organizations manage their employee information and related tasks effectively.\r\nTop of Form\r\nRecruitment Management\r\nA recruitment module is a component that allows organizations to manage their recruitment processes effectively. The module typically includes features such as job posting management, applicant tracking, interview scheduling, and candidate selection.\r\nHere are some of the key features of a recruitment module in an HRMS:\r\nJob posting management: This feature allows employers to post job openings on various job portals and social media platforms, manage job descriptions, and receive applications from candidates.\r\nApplicant tracking: The applicant tracking feature allows employers to track the status of job applications and manage candidate profiles and resumes.\r\nInterview scheduling: The interview scheduling feature allows employers to schedule interviews with candidates, send reminders, and manage interview feedback.\r\nCandidate selection: The candidate selection feature allows employers to evaluate candidates based on their qualifications, skills, and experience, and make informed hiring decisions.\r\nReporting and analytics: The reporting and analytics feature allows employers to track recruitment metrics, such as time-to-hire, cost-per-hire, and applicant sources, and make data-driven decisions to improve their recruitment processes.\r\nOnboarding: The onboarding feature allows employers to seamlessly onboard new employees, automate paperwork, and ensure a smooth transition into their new roles.\r\nOverall, a recruitment module in an HRMS is a powerful tool that helps organizations manage their recruitment processes more efficiently and effectively, leading to better candidate experiences, faster hiring times, and improved retention rates.\r\nTop of Form\r\n4. Timesheet ManahementA timesheets module in HRMS (Human Resource Management System) is a software component that allows employees to record the number of hours worked on specific tasks or projects. The module is designed to simplify the time tracking process, providing HR managers with an accurate and efficient way to manage employee time and attendance data.\r\nThe timesheets module typically includes features such as:\r\nTime entry: Employees can easily enter their work hours for a specific time period, whether daily, weekly, or monthly.\r\nProject/task allocation: Employees can allocate their hours to specific projects or tasks, which helps managers track project progress and analyze resource allocation.\r\nApproval workflows: The module usually comes with a built-in workflow that allows managers to review and approve employee timesheets, ensuring accuracy and compliance.\r\nReporting: The module generates detailed reports on employee time and attendance, including billable hours, overtime, and leave taken.\r\nIntegration: The timesheets module can integrate with other HRMS modules, such as payroll and project management, to streamline business processes.\r\nThe benefits of using a timesheets module in HRMS include:\r\nIncreased efficiency: Automated time tracking reduces manual data entry and processing, saving time and reducing errors.\r\nImproved accuracy: The module helps to ensure accurate timekeeping, reducing the risk of compliance issues and errors in payroll processing.\r\nEnhanced visibility: The module provides real-time visibility into employee time and attendance data, enabling managers to make informed decisions about resource allocation and project management.\r\nIncreased compliance: The module helps organizations comply with labor laws and regulations, such as tracking overtime and leave entitlements.\r\nOverall, the timesheets module in HRMS is an essential component for any organization looking to manage employee time and attendance data accurately and efficiently.\r\nInventory Management\r\nInventory management is an important component of an HRMS (Human Resource Management System) that allows organizations to track and manage their inventory of equipment, supplies, and other assets. An inventory management module in an HRMS typically includes the following features:\r\nAsset tracking: The module allows organizations to track the movement and usage of assets such as laptops, mobile phones, and other equipment.\r\nInventory control: The module helps organizations maintain optimal levels of inventory by tracking stock levels, identifying low stock levels, and automating reordering processes.\r\nPurchase order management: The module includes functionality to manage purchase orders, including creating and approving orders, tracking delivery, and managing supplier information.\r\nAsset maintenance: The module helps organizations schedule and track maintenance and repairs on assets, ensuring they are in good working order.\r\nReporting and analysis: The module generates reports on inventory levels, asset usage, and maintenance history, providing valuable insights into asset management.\r\nThe benefits of using an inventory management module in an HRMS include:\r\nCost savings: By tracking inventory levels and automating reordering processes, the module helps organizations avoid stock shortages and overstocking, reducing waste and saving costs.\r\nImproved asset tracking: The module provides real-time visibility into asset usage and location, helping organizations reduce the risk of loss or theft of assets.\r\nIncreased efficiency: Automated inventory control and purchase order management processes save time and reduce errors, improving efficiency and productivity.\r\nEnhanced compliance: The module helps organizations comply with regulations and standards by tracking asset usage and maintenance history.\r\nOverall, an inventory management module in an HRMS is an essential tool for organizations that need to manage their assets efficiently and effectively. It provides real-time visibility into asset usage and location, automates inventory control and purchase order management processes, and generates valuable insights through reporting and analysis.\r\nTop of Form\r\nRoles &amp; Permissions\r\nA Roles and Permissions module in an HRMS (Human Resource Management System) is a software component that enables organizations to control user access to HRMS functions, data, and resources. The module helps ensure data security, maintain confidentiality, and prevent unauthorized access to sensitive information. The following are the main features of a Roles and Permissions module:\r\nUser management: The module enables HR administrators to create and manage user accounts, assign roles and permissions, and control access to HRMS features and data.\r\nRole-based access control (RBAC): RBAC enables administrators to define roles and assign permissions to them based on their job functions and responsibilities.\r\nData access control: The module allows administrators to control access to specific HRMS data and resources, such as employee records and payroll information.\r\nAudit trails: The module enables administrators to monitor user activities and maintain a log of all access and changes made to HRMS data.\r\nCompliance reporting: The module generates compliance reports to help organizations demonstrate compliance with regulatory requirements, such as data privacy and security regulations.\r\nThe benefits of using a Roles and Permissions module in an HRMS include:\r\nImproved data security: The module helps prevent unauthorized access to sensitive data, reducing the risk of data breaches and protecting the privacy of employees.\r\nIncreased efficiency: The module streamlines user management processes, reducing administrative overhead and improving productivity.\r\nEnhanced compliance: The module helps organizations comply with data privacy and security regulations, such as GDPR and HIPAA, by providing audit trails and compliance reports.\r\nImproved collaboration: The module enables organizations to collaborate more effectively by granting access to the right people with the right permissions.\r\nOverall, a Roles and Permissions module is a critical component of an HRMS that ensures data security, maintains confidentiality, and helps organizations comply with regulatory requirements. By enabling organizations to control user access to HRMS functions, data, and resources, the module enhances efficiency, productivity, and collaboration.\r\nTop of Form\r\n7.Authentication Management\r\nAn Authentication Module in an HRMS (Human Resource Management System) is a software component that provides secure user authentication and access control to the system. The module ensures that only authorized users can access the HRMS and the data stored within it. The following are the main features of an Authentication module:\r\nUser authentication: The module verifies user credentials, such as username and password, to ensure that only authorized users can access the HRMS.\r\nMulti-factor authentication (MFA): MFA adds an extra layer of security by requiring users to provide additional authentication factors, such as a security token or biometric verification.\r\nPassword policy management: The module enables administrators to define password policies, such as minimum length and complexity requirements, to ensure that user passwords are strong and secure.\r\nAccount lockout management: The module automatically locks user accounts after a specified number of failed login attempts to prevent brute force attacks.\r\nSession management: The module manages user sessions and automatically logs out inactive users after a specified period of time to prevent unauthorized access.\r\nThe benefits of using an Authentication module in an HRMS include:\r\nImproved data security: The module ensures that only authorized users can access HRMS data, protecting sensitive employee information from unauthorized access.\r\nEnhanced compliance: The module helps organizations comply with data privacy regulations, such as GDPR and HIPAA, by ensuring secure user authentication and access control.\r\nReduced risk of data breaches: By providing multi-factor authentication and password policy management, the module reduces the risk of data breaches caused by weak or stolen user credentials.\r\nImproved user experience: The module provides a secure and user-friendly login process, enabling users to easily access the HRMS.\r\nOverall, an Authentication module is a critical component of an HRMS that provides secure user authentication and access control to the system. The module helps organizations protect sensitive employee data, comply with data privacy regulations, and reduce the risk of data breaches.', 'Texas', 42, 164, 0, NULL, 0, '2023-04-19 01:08:30', NULL);
INSERT INTO `resumes` (`id`, `profile_id`, `total_exp`, `profile_title`, `filename`, `resume`, `location`, `emp_type_id`, `visa_type_id`, `in_place`, `in_block_list`, `in_hotlist`, `created_at`, `updated_at`) VALUES
(308, 570261, 6, 'Java Developer', 'uploads/resumes/2023/04/18/570261_183444_8560.pdf', 'EP003054300 Sourcing Channel PERSONAL LOAN Branches APPLICATION FORM DSA Alternate .Please use CAPITAL LETTERS only. .Please Tick wherever Applicable. .All fields are mandatory. FOR BANK USE ONLY SOL ID 0040 RM NAME SRI KUMAR-90021812 Employee No. 568631 Date Channel Name PL-XSELL Executive Name ERIGIRALA BHASKER Executive Code IPRO005079O01472 DSA Code BRANCH-0040 VSTS Code CRM ID/IKART ID Application Type: New Update KYC Number 30032229968415 (Mandatory for KYC update request) Account Type: Normal PERSONAL DETAILS Title Mr. Mrs. Miss _________ Others APPLICANT CO-APPLICANT Name CHOPPADANDI SAGAR Maiden Name Father\'s Name LACHAIAH CHOPPADANDI Mother\'s Name MALLAMMA Spouse Name DOB Date of birth 09-09-1988 Gender: Male Female Transgender | Religion: HINDU Education Professional Diploma Holder Graduate Post Graduate Under Graduate/Matriculate Customer Category General SC ST OBC Other __________ | Marital Status: Married Single Others______ Residence Address 8-4-369/BN/334,1,BANJARA NAGAR,BORABANDA,,KAVITHA VIDHYANIKETHANSCHOOL City/Town/Village HYDERABAD District K V RANGAREDDY Nearest Landmark State TELANGANA PIN 500018 Tel( R ) - Residence is Self Owned Rented Company provided Other ________________ Residence Type Bunglow(B) Row House(R) Flat(F) Other(O) ________________ No.of years at above residence 5 Yrs 0 Months Tick,if Permanent Address is same as Residence Address Permanent Address BOTLAVANAPARTHY KARIMNAGAR,BOTLAVANAPARTHY City/Town/Village KARIMNAGAR District KARIMNAGAR Landmark State TELANGANA PIN 505187 Tel( R ) - Location Category Rural Semi Urban Urban Metro Additional Address BOTLAVANAPARTHY KARIMNAGAR,BOTLAVANAPARTHY District KARIMNAGAR City/Town/Village KARIMNAGAR State TELANGANA PIN 505187 Nearest Landmark Tel( R ) - Mobile No. 8106176863 Email ID SAGARHIMIC@GMAIL.COM Gross Income 10 to 20 lakhs (per annum) UID No XXXX-XXXX-6133 Citizenship IN-Indian Others (ISO 3166 Country Code) No. of Dependents Residential Status Non-resident Individual Person of Indian Origin Foreign National Resident Individual PREFERRED MAILING ADDRESS Subscription for statement by Email/Mobile Alerts Residence (R) Office (O) Name:CHOPPADANDI SAGAR 2023-03-13 12:57:04.0 OTP sent on ******6863 EP003054300 Sourcing Channel PERSONAL LOAN Branches APPLICATION FORM DSA Alternate .Please use CAPITAL LETTERS only. .Please Tick wherever Applicable. .All fields are mandatory. FOR BANK USE ONLY SOL ID 0040 RM NAME SRI KUMAR-90021812 Employee No. 568631 Date Channel Name PL-XSELL Executive Name ERIGIRALA BHASKER Executive Code IPRO005079O01472 DSA Code BRANCH-0040 VSTS Code CRM ID/IKART ID Application Type: New Update KYC Number 30032229968415 (Mandatory for KYC update request) Account Type: Normal PERSONAL DETAILS Title Mr. Mrs. Miss _________ Others APPLICANT CO-APPLICANT Name CHOPPADANDI SAGAR Maiden Name Father\'s Name LACHAIAH CHOPPADANDI Mother\'s Name MALLAMMA Spouse Name DOB Date of birth 09-09-1988 Gender: Male Female Transgender | Religion: HINDU Education Professional Diploma Holder Graduate Post Graduate Under Graduate/Matriculate Customer Category General SC ST OBC Other __________ | Marital Status: Married Single Others______ Residence Address 8-4-369/BN/334,1,BANJARA NAGAR,BORABANDA,,KAVITHA VIDHYANIKETHANSCHOOL City/Town/Village HYDERABAD District K V RANGAREDDY Nearest Landmark State TELANGANA PIN 500018 Tel( R ) - Residence is Self Owned Rented Company provided Other ________________ Residence Type Bunglow(B) Row House(R) Flat(F) Other(O) ________________ No.of years at above residence 5 Yrs 0 Months Tick,if Permanent Address is same as Residence Address Permanent Address BOTLAVANAPARTHY KARIMNAGAR,BOTLAVANAPARTHY City/Town/Village KARIMNAGAR District KARIMNAGAR Landmark State TELANGANA PIN 505187 Tel( R ) - Location Category Rural Semi Urban Urban Metro Additional Address BOTLAVANAPARTHY KARIMNAGAR,BOTLAVANAPARTHY District KARIMNAGAR City/Town/Village KARIMNAGAR State TELANGANA PIN 505187 Nearest Landmark Tel( R ) - Mobile No. 8106176863 Email ID SAGARHIMIC@GMAIL.COM Gross Income 10 to 20 lakhs (per annum) UID No XXXX-XXXX-6133 Citizenship IN-Indian Others (ISO 3166 Country Code) No. of Dependents Residential Status Non-resident Individual Person of Indian Origin Foreign National Resident Individual PREFERRED MAILING ADDRESS Subscription for statement by Email/Mobile Alerts Residence (R) Office (O) Name:CHOPPADANDI SAGAR 2023-03-13 12:57:04.0 OTP sent on ******6863 DETAILS OF FACILITY REQUIRED* Credit Facility Amount 1000000 Tenure 48 Months *Subject to Approval Purpose of Facility Education Travel Occasion in Family Purchase of Household/ Electronic Goods Home Renovation / Extension _________________ Others HE-PERSONAL USE Utilisation District K V RANGAREDDY Utilisation Taluka Occupation OTHERS Division OTHERS Sub Division OTHERS Activity OTHERS OCCUPATIONAL DETAILS Private Sector Public Sector Government Sector Occupation Retired Housewife Salaried _________________ Others If Salaried / Constitution Type of company Occupation Name Pvt.Ltd. Partnership Proprietor Public Ltd. Ltd. Liability co. Retailers PSU Govt MNC Others_______ Automobile Agriculture based Banking BPO Capital goods Telecom IT Retail Real Estate Consumer Durables FMCG NBFC Marketing/Adv. Pharma Media Other_ Education Electricity,gas&water supply Health&Social Work Fishing Mining&Quarrying Transportation Public Administrations / Defense Hospitality Trader / Distributor Comm. Agent Retailer Employer Details Designation: OTHER Total Exp injob: 8 Yrs 0 Months Exp.in Currentjob: 2 Yrs 5 Months Emp ID 31257 Company/Employer Name OTHERS-USM BUSINESS SYSTEMS Company/Employer Address 8-2-293/82 USM BUSINESS SYSTEMS A/270E NROAD NO 10 GAYATRI HILLS JUBILEE HILLS Landmark RD NO 10 City HYDERABAD PIN Code 500033 State TELANGANA Country INDIA Tel(0) - Mobile 8106176863 Office e-mail ID SAGARC@USMSYSTEMS.COM BANK DETAILS (Primary Bank) Name of Bank ICICI BANK LTD Branch BALANAGAR BRANCH A/C. No. 111501505590 UPI/VPA Account Type Saving Current OC/CC if Overdraft,Limit: No.of years: Existing relationship with ICICI: CC HH AL PL ENACH Registration Mode: Net Banking Debit Card PROOF OF IDENTITY(POI) (Certified copy of any one of the following POI needs to be submitted) A-Passport Number Expiry Date B-Voter ID Card C-National Population Register Letter D - Driving License Expiry Date E-UID( Aadhar) 6133 or VID No. F-NREGA Job Card Z-Other(any docment notified by government) Identification No. S-Simplified Measures Account-Document Type Code Identification No. PROOF OF ADDRESS(POA) Current/ Permanent/ Overseas Address Details (Certified copy of any one of the following POA needs to be submitted) Address Type Residential Business Registered Office Unspecified Proof of Address Passport Driving License UID(Aadhar) Voter ID card NREGA Job Card National Population Register Letter Other Simplified Measures account- Document Type Code Current address(correspondence/local address):State/ UT code: TELANGANA ISO 3166 Country Code INDIA Permanent Address: State/ UT code: TELANGANA ISO 3166 Country code: INDIA Overseas Address: ISO 3166 Country code Name:CHOPPADANDI SAGAR 2023-03-13 12:57:04.0 OTP sent on ******6863 DETAILS OF FACILITY REQUIRED* Credit Facility Amount 1000000 Tenure 48 Months *Subject to Approval Purpose of Facility Education Travel Occasion in Family Purchase of Household/ Electronic Goods Home Renovation / Extension _________________ Others HE-PERSONAL USE Utilisation District K V RANGAREDDY Utilisation Taluka Occupation OTHERS Division OTHERS Sub Division OTHERS Activity OTHERS OCCUPATIONAL DETAILS Private Sector Public Sector Government Sector Occupation Retired Housewife Salaried _________________ Others If Salaried / Constitution Type of company Occupation Name Pvt.Ltd. Partnership Proprietor Public Ltd. Ltd. Liability co. Retailers PSU Govt MNC Others_______ Automobile Agriculture based Banking BPO Capital goods Telecom IT Retail Real Estate Consumer Durables FMCG NBFC Marketing/Adv. Pharma Media Other_ Education Electricity,gas&water supply Health&Social Work Fishing Mining&Quarrying Transportation Public Administrations / Defense Hospitality Trader / Distributor Comm. Agent Retailer Employer Details Designation: OTHER Total Exp injob: 8 Yrs 0 Months Exp.in Currentjob: 2 Yrs 5 Months Emp ID 31257 Company/Employer Name OTHERS-USM BUSINESS SYSTEMS Company/Employer Address 8-2-293/82 USM BUSINESS SYSTEMS A/270E NROAD NO 10 GAYATRI HILLS JUBILEE HILLS Landmark RD NO 10 City HYDERABAD PIN Code 500033 State TELANGANA Country INDIA Tel(0) - Mobile 8106176863 Office e-mail ID SAGARC@USMSYSTEMS.COM BANK DETAILS (Primary Bank) Name of Bank ICICI BANK LTD Branch BALANAGAR BRANCH A/C. No. 111501505590 UPI/VPA Account Type Saving Current OC/CC if Overdraft,Limit: No.of years: Existing relationship with ICICI: CC HH AL PL ENACH Registration Mode: Net Banking Debit Card PROOF OF IDENTITY(POI) (Certified copy of any one of the following POI needs to be submitted) A-Passport Number Expiry Date B-Voter ID Card C-National Population Register Letter D - Driving License Expiry Date E-UID( Aadhar) 6133 or VID No. F-NREGA Job Card Z-Other(any docment notified by government) Identification No. S-Simplified Measures Account-Document Type Code Identification No. PROOF OF ADDRESS(POA) Current/ Permanent/ Overseas Address Details (Certified copy of any one of the following POA needs to be submitted) Address Type Residential Business Registered Office Unspecified Proof of Address Passport Driving License UID(Aadhar) Voter ID card NREGA Job Card National Population Register Letter Other Simplified Measures account- Document Type Code Current address(correspondence/local address):State/ UT code: TELANGANA ISO 3166 Country Code INDIA Permanent Address: State/ UT code: TELANGANA ISO 3166 Country code: INDIA Overseas Address: ISO 3166 Country code Name:CHOPPADANDI SAGAR 2023-03-13 12:57:04.0 OTP sent on ******6863 INSURANCE INTENT DECLARATION I/We hereby declare that I/We would like to opt for insurance plan offered by insurance company in association with ICICI Bank.I/ We have carefully read and understood the contents of brochure. I/We have understood that the insurance premium shall be deducted from the loan amount sanctioned by ICICI Bank and I hereby authorize ICICI Bank to deduct the insurance premium from sanctioned loan amount and disburse only the remaining loan amount. I confirm that I am voluntarily participating in this programme and am aware that the loan is available without insurance as well Signature of the Applicant CONSENT FOR ICICI BANK(GDPR Declaration) Yes for ICICI Group Companies Yes for partners of ICICI Bank Yes for both Not for both Mode of marketing By E-Mail By Post By SMS/Text By Social Media By Telephone / Call By Whatsapp No to marketing by all Yes to marketing by all TICK YOUR CHOICE OF CARD* (Tick just one) Signature of the Applicant Product Net Monthly Income(*) Joining Fee Annual Fee (2nd year Onwards) Minimum Spends for Annual fee reversal Large Pricing ICICI Bank Sapphtro CreditCard 1,50,000 and above NIL 3500 5,00,000 412 TW ICICI Bank Rubyx CreditCard 45,000 and above NIL 2500 3,00,000 435 TS ICICI Bank Coral CreditCard 20,000 and above NIL 500 1,50,000 365 PW ICICI Bank Maturity Trip Platinum Card 20,000 and above 500 NA NA 443 JF ICICI Bank Manchester United Platinum Card 20,000 and above 499 NA 1,25,000 418 PF FEES & CHARGES* Overdue Interest on extended credit Interest on cash advances Monthly Annual Monthly Annual ICICI Bank Card 3.40% 40.80% 3.40% 40.80% Subscription for statement by Email Mobile Alerts *GST Charges are Applicable Name to be printed on Credit Card*(Maximum 19 characters, including spaces) REFERENCES (PREFERABLY FRIEND/COLLEAGUE) 1. Name Relationship Address Pincode Email ID Tel/Mob No. Name:CHOPPADANDI SAGAR 2023-03-13 12:57:04.0 OTP sent on ******6863 INSURANCE INTENT DECLARATION I/We hereby declare that I/We would like to opt for insurance plan offered by insurance company in association with ICICI Bank.I/ We have carefully read and understood the contents of brochure. I/We have understood that the insurance premium shall be deducted from the loan amount sanctioned by ICICI Bank and I hereby authorize ICICI Bank to deduct the insurance premium from sanctioned loan amount and disburse only the remaining loan amount. I confirm that I am voluntarily participating in this programme and am aware that the loan is available without insurance as well Signature of the Applicant CONSENT FOR ICICI BANK(GDPR Declaration) Yes for ICICI Group Companies Yes for partners of ICICI Bank Yes for both Not for both Mode of marketing By E-Mail By Post By SMS/Text By Social Media By Telephone / Call By Whatsapp No to marketing by all Yes to marketing by all TICK YOUR CHOICE OF CARD* (Tick just one) Signature of the Applicant Product Net Monthly Income(*) Joining Fee Annual Fee (2nd year Onwards) Minimum Spends for Annual fee reversal Large Pricing ICICI Bank Sapphtro CreditCard 1,50,000 and above NIL 3500 5,00,000 412 TW ICICI Bank Rubyx CreditCard 45,000 and above NIL 2500 3,00,000 435 TS ICICI Bank Coral CreditCard 20,000 and above NIL 500 1,50,000 365 PW ICICI Bank Maturity Trip Platinum Card 20,000 and above 500 NA NA 443 JF ICICI Bank Manchester United Platinum Card 20,000 and above 499 NA 1,25,000 418 PF FEES & CHARGES* Overdue Interest on extended credit Interest on cash advances Monthly Annual Monthly Annual ICICI Bank Card 3.40% 40.80% 3.40% 40.80% Subscription for statement by Email Mobile Alerts *GST Charges are Applicable Name to be printed on Credit Card*(Maximum 19 characters, including spaces) REFERENCES (PREFERABLY FRIEND/COLLEAGUE) 1. Name Relationship Address Pincode Email ID Tel/Mob No. Name:CHOPPADANDI SAGAR 2023-03-13 12:57:04.0 OTP sent on ******6863 DECLARATION I/We have no objection to ICICI Bank Limited, its group companies, agents/representatives to provide me/us information on various products, offers & services provided by ICICI Bank Limited/ its group companies through any mode (including without limitation through telephone calls/ SMSs/emails) and authorize ICICI Bank Limited, Its group companies, agents I representatives for the above purpose. Please tick Yes or No, as acceptable# Yes No COMMON DECLARATIONS 1. I/We declare that all the particulars and information and details given/filled in this application form are true, correct,complete and up- to-date in all respects and that I/We have notwithheld any information whatsoever. 13. II/We declare and undertake that the Credit Cards issued to me /us,if used overseas, shall be utilised strictly in accordance with the relevant exchange control regulations issued & as amended by the Reserve Bank of India(RBI) from time to time. In the event I/we exceed my/our entitlements as per the exchange control guide-lines of RBI, I/we undertake to bring the same immediately to the notice of ICICI Bank Limited in writing. Further, I/we also agree and understand that if I/we am/are required to get my/our passport endorsed for any charges incurred by me/us as stipulated by RBI, the onus of getting my/our passport endorsed shall lie entirely on me /us. In the event of any failure to comply with the prevailing exchange control guidelines issued by RBI to me/us, I/we shall be liable for any action under the Foreign Exchange Management Act, 1999, as amended and be debarred from the Credit Card facility either at ICICI Bank Limited instance or by RBI. 2. I hereby declare that the details furnished above are true and correct to the best of my knowledge and belief and I undertake to inform you of any changes therein, immediately. In case any of the above information is found to be false or untrue or misleading or misrepresenting. I am aware that I may be held liable for it. 3. I hereby consent to receiving information from Central KYC Registry through SMS / Email on the above registered number/email address. 4. I/ We confirm that no insolvency proceedings or suits for recovery of outstanding dues or monies whatsoever and/ or any criminal proceedings have been initiated and/or are pending against me/us and that I / we have been never adjudicated insolvent by any court or other authority. 5. No action nor other steps have been taken or legal proceedings started by or against me/us in any court of law/ other authorities for Winding up, dissolution, administration or reorganization or for the appointment of a receiver, administrator, administrative receiver, trustee or similar officer or for my/our assets. 14. In the event of a Credit Card programme closure or at the time of renewal of Credit Card, ICICI Bank Limited at its sole discretion reserves the right to provide a card type that is different from the existing card type held by the Cardholder. The credit limits and cash limits on any Credit Card at any point in time are as per sole discretion of ICICI Bank Limited. The card application shall continue to be valid for any replacement card provided at the time of closure/renewal. Internationally valid Card and all other Cards cannot be used on Internet or otherwise for purchase of prohibited items like lottery tickets, banned or proscribed magazines, participation in sweepstakes, payment for callback services, remittance in any form towards overseas forex trading, margin calls to overseas exchanges/overseas counter party, trading in foreign exchange in domestic/overseas markets etc. 6. I/We declare that I/we have not made any payment in cash, bearer cheque or kind along with or in connection with this application to the executive or kind along with or in connection with this application to the executive such payment made by us to the executive collecting this application. 7. l/We understand and confirm that the Application Form and all other documents submitted by me/us to ICICI Bank shall not be returned to me/us and ICICI Bank shall have the right to retain the same. 8. I/ We authorize ICICI Bank Limited (ICICI Bank) and their agents to exchange, share or part with all information and data maintained with ICICI Bank relating to my/ our existing account related information including existing or prior loans and repayment history to other ICICI group companies, banks, financial institutions, credit bureau, agencies, mobile network operators directly or indirectly, statutory bodies and other service providers of ICICI Bank as may be required and I/We shall not hold ICICI Bank (or any of its group companies) liable for sharing such information. 15.I/We have read the application form and brochures and am/are aware of all the terms / conditions of availing finance from ICICI Bank Limited. I/We authorise ICICI Bank Limited to make references and enquiries related to information in this application which, ICICI Bank Limited consider necessary. I/We undertake to inform ICICI Bank Limited regarding change in my/our residence /employment and to provide any further information that ICICI Bank Limited may require. I confirm that I have gone through all the Terms& Conditions, Most Important Terms & Conditions and Important Credit Card Declaration and hereby agree to abide by the same. 16.For cash withdrawals, interests will be charged from the day of transaction and no free credit period will be provided. 17.I hereby give consent to ICICI Bank for linking my ICICI Bank credit card with my existing ICICI Bank savings/current account, if any. I understand that this would enable me to access my ICICI Bank credit card account using the existing user ID provided to me under my ICICI Bank savings/current account, if any, through internet banking and iMobile facility. I further understand that I may delink my ICICI Bank savings/current account from my ICICI credit card by calling ICICI Customer Care number available at www.icicibank.com 18.I understand that under the alert facility,ICICI Bank will enable me to receive customer message alerts with respect to events/ transactions relating to my Credit Card or informational/ promotional mail that will be useful to me over my mobile phone or through e-mail. I agree to receive communication on my alternate e- mail ID in case the alert messages with respect to any event / transaction are not delivered to my preferred e-mail ID.(subject to information provided in the Application Form). I agree to abide by the Terms & Conditions of ICICI Bank in this regard. 9. I/We understand and acknowledge that ICICI Bank shall have the absolute discretion, without assigning any reasons (unless required by applicable law), to reject our application and that ICICI Bank shall not be responsible/liable in any manner whatsoever to me/us for such rejection or any delay in notifying me/us of such rejection and any costs, losses, damages or expenses, or other consequences, caused by reason of such rejection, or any delay in notifying me/us of such rejection,of our application. 10. Except to the extent disclosed to ICICI Bank, no director or a relative/near relation (as specified by RBI) of a director of a banking company (including ICICI Bank) or a relative/near relation (as specified by RBI) of a senior officer of ICICI Bank (as specified by RBI) is the Applicant(s),or a partner of concern, or of our subsidiary, or our holding company, or a guarantor on my/our behalf, or holds substantial interest in our concern or my/our subsidiary or holding company. DECLARATION I/We have no objection to ICICI Bank Limited, its group companies, agents/representatives to provide me/us information on various products, offers & services provided by ICICI Bank Limited/ its group companies through any mode (including without limitation through telephone calls/ SMSs/emails) and authorize ICICI Bank Limited, Its group companies, agents I representatives for the above purpose. Please tick Yes or No, as acceptable# Yes No COMMON DECLARATIONS 1. I/We declare that all the particulars and information and details given/filled in this application form are true, correct,complete and up- to-date in all respects and that I/We have notwithheld any information whatsoever. 13. II/We declare and undertake that the Credit Cards issued to me /us,if used overseas, shall be utilised strictly in accordance with the relevant exchange control regulations issued & as amended by the Reserve Bank of India(RBI) from time to time. In the event I/we exceed my/our entitlements as per the exchange control guide-lines of RBI, I/we undertake to bring the same immediately to the notice of ICICI Bank Limited in writing. Further, I/we also agree and understand that if I/we am/are required to get my/our passport endorsed for any charges incurred by me/us as stipulated by RBI, the onus of getting my/our passport endorsed shall lie entirely on me /us. In the event of any failure to comply with the prevailing exchange control guidelines issued by RBI to me/us, I/we shall be liable for any action under the Foreign Exchange Management Act, 1999, as amended and be debarred from the Credit Card facility either at ICICI Bank Limited instance or by RBI. 2. I hereby declare that the details furnished above are true and correct to the best of my knowledge and belief and I undertake to inform you of any changes therein, immediately. In case any of the above information is found to be false or untrue or misleading or misrepresenting. I am aware that I may be held liable for it. 3. I hereby consent to receiving information from Central KYC Registry through SMS / Email on the above registered number/email address. 4. I/ We confirm that no insolvency proceedings or suits for recovery of outstanding dues or monies whatsoever and/ or any criminal proceedings have been initiated and/or are pending against me/us and that I / we have been never adjudicated insolvent by any court or other authority. 5. No action nor other steps have been taken or legal proceedings started by or against me/us in any court of law/ other authorities for Winding up, dissolution, administration or reorganization or for the appointment of a receiver, administrator, administrative receiver, trustee or similar officer or for my/our assets. 14. In the event of a Credit Card programme closure or at the time of renewal of Credit Card, ICICI Bank Limited at its sole discretion reserves the right to provide a card type that is different from the existing card type held by the Cardholder. The credit limits and cash limits on any Credit Card at any point in time are as per sole discretion of ICICI Bank Limited. The card application shall continue to be valid for any replacement card provided at the time of closure/renewal. Internationally valid Card and all other Cards cannot be used on Internet or otherwise for purchase of prohibited items like lottery tickets, banned or proscribed magazines, participation in sweepstakes, payment for callback services, remittance in any form towards overseas forex trading, margin calls to overseas exchanges/overseas counter party, trading in foreign exchange in domestic/overseas markets etc. 6. I/We declare that I/we have not made any payment in cash, bearer cheque or kind along with or in connection with this application to the executive or kind along with or in connection with this application to the executive such payment made by us to the executive collecting this application. 7. l/We understand and confirm that the Application Form and all other documents submitted by me/us to ICICI Bank shall not be returned to me/us and ICICI Bank shall have the right to retain the same. 8. I/ We authorize ICICI Bank Limited (ICICI Bank) and their agents to exchange, share or part with all information and data maintained with ICICI Bank relating to my/ our existing account related information including existing or prior loans and repayment history to other ICICI group companies, banks, financial institutions, credit bureau, agencies, mobile network operators directly or indirectly, statutory bodies and other service providers of ICICI Bank as may be required and I/We shall not hold ICICI Bank (or any of its group companies) liable for sharing such information. 15.I/We have read the application form and brochures and am/are aware of all the terms / conditions of availing finance from ICICI Bank Limited. I/We authorise ICICI Bank Limited to make references and enquiries related to information in this application which, ICICI Bank Limited consider necessary. I/We undertake to inform ICICI Bank Limited regarding change in my/our residence /employment and to provide any further information that ICICI Bank Limited may require. I confirm that I have gone through all the Terms& Conditions, Most Important Terms & Conditions and Important Credit Card Declaration and hereby agree to abide by the same. 16.For cash withdrawals, interests will be charged from the day of transaction and no free credit period will be provided. 17.I hereby give consent to ICICI Bank for linking my ICICI Bank credit card with my existing ICICI Bank savings/current account, if any. I understand that this would enable me to access my ICICI Bank credit card account using the existing user ID provided to me under my ICICI Bank savings/current account, if any, through internet banking and iMobile facility. I further understand that I may delink my ICICI Bank savings/current account from my ICICI credit card by calling ICICI Customer Care number available at www.icicibank.com 18.I understand that under the alert facility,ICICI Bank will enable me to receive customer message alerts with respect to events/ transactions relating to my Credit Card or informational/ promotional mail that will be useful to me over my mobile phone or through e-mail. I agree to receive communication on my alternate e- mail ID in case the alert messages with respect to any event / transaction are not delivered to my preferred e-mail ID.(subject to information provided in the Application Form). I agree to abide by the Terms & Conditions of ICICI Bank in this regard. 9. I/We understand and acknowledge that ICICI Bank shall have the absolute discretion, without assigning any reasons (unless required by applicable law), to reject our application and that ICICI Bank shall not be responsible/liable in any manner whatsoever to me/us for such rejection or any delay in notifying me/us of such rejection and any costs, losses, damages or expenses, or other consequences, caused by reason of such rejection, or any delay in notifying me/us of such rejection,of our application. 10. Except to the extent disclosed to ICICI Bank, no director or a relative/near relation (as specified by RBI) of a director of a banking company (including ICICI Bank) or a relative/near relation (as specified by RBI) of a senior officer of ICICI Bank (as specified by RBI) is the Applicant(s),or a partner of concern, or of our subsidiary, or our holding company, or a guarantor on my/our behalf, or holds substantial interest in our concern or my/our subsidiary or holding company. 202031392E492068657265627920617574686F726973652049434943492042616E6B204C746420289349434943492042616E6B942920746F207368617265206D7920 data or information associated with my MakeMyTrip ICICI Bank 437265646974204361726420282243617264206170706C69636174696F6E94292028692920452D6D61696C2049443B2028696929204D6F62696C65206E756D6265723B2020 (iii) Card variant availed of (Platinum); (iv) Credit Card account number with MakeMyTrip (India) Private Limited and its affiliates 28934D4D54942920746F2075706461746520697473207265636F72647320616E642070726F76696465206D652073657276696365732C207265776172647320262020 benefits with respect to the Card. E-mail ID provided by me in the Card application does not have a corresponding MMT account, MMT shall provide me with services, rewards & benefits associated with the Card on my MMT account linked to my mobile number. In case my e-mail ID or mobile number are not present in any MMT account, MMT shall create a new MMT account on my behalf with my e-mail ID and/or mobile number, provided under the Card application. MMT shall update me with details of the new MMT account and steps to access the new MMT account by way of an SMS and/or e-mail. For Credit Card 11.Issuance of the said Credit Card is at the sole discretion of ICICI Bank Ltd. The credit limits on the Credit Card account will be fixed by the bank based on my income documents. 12.The Cardholder shall be entitled to apply for a review /enhancement/reduction of the credit Limit and/or Cash Limit (if provided by ICICI Bank), upon completion of 12 months of his/her membership. Alterations upon such review, if any, of the Credit Limit and/or Cash Limit will be at the sole discretion of ICICI Bank ICICI Bank shall at its sole discretion be. entitled to review (including enhancement or reduction) of the Credit Limit and/or Cash Limit assigned on the Card at any time & only enhancements, if any, to the Credit Limit &/or the Cash Limit, shall be effected by ICICI Bank with the consent of the Cardholder. END USE DECLARATION I hereby represent, warrant and confirm that the loan has been taken for a valid purpose and is not speculative or illegal in any manner. I also declare that funds under the facility will not be used towards purchase of gold in any form, including primary gold, gold bullion, gold jewellery, gold coins, units of gold exchange traded funds(ETF) and units of gold, mutual funds etc. The facility either in part or full will not be used for investment in capital market, land acquisition, promoters contribution in the project or any other purpose, which is prohibited or any illegal activity. I further agree, confirm and undertake that the purpose of use of funds under the loan shall not be changed in any manner during the tenor of loan, or that such change in purpose shall take place only with the prior written permission of ICICI Bank. I agree that any breach or default in complying with all or any of the aforesaid undertaking(s) will constitute an event of default under the facility documents. 93446973636C61696D65723A20506F696E7420313120746F31392061726520666F72204372656469742043617264206170706C69636174696F6E206F6E6C799420 DETAILS OF CHARGES Interest Rate* % per annum Processing Fee(Non refundable)* up to 2.25% of loan amount plus GST if others please specify Prepayment Charges* 5% of principal outstanding plus GST if others please specify *(Subject to change as per bank\'s discretion from time to time) Note: Please visit http://www.icicibank.com for detailed charges & fees under the respective loan product. Changes 696E20636861726765732066726F6D2074696D6520746F2074696D65206172652075706461746564206F6E2062616E6B927320776562736974652E Name:CHOPPADANDI SAGAR 2023-03-13 12:57:04.0 OTP sent on ******6863 202031392E492068657265627920617574686F726973652049434943492042616E6B204C746420289349434943492042616E6B942920746F207368617265206D7920 data or information associated with my MakeMyTrip ICICI Bank 437265646974204361726420282243617264206170706C69636174696F6E94292028692920452D6D61696C2049443B2028696929204D6F62696C65206E756D6265723B2020 (iii) Card variant availed of (Platinum); (iv) Credit Card account number with MakeMyTrip (India) Private Limited and its affiliates 28934D4D54942920746F2075706461746520697473207265636F72647320616E642070726F76696465206D652073657276696365732C207265776172647320262020 benefits with respect to the Card. E-mail ID provided by me in the Card application does not have a corresponding MMT account, MMT shall provide me with services, rewards & benefits associated with the Card on my MMT account linked to my mobile number. In case my e-mail ID or mobile number are not present in any MMT account, MMT shall create a new MMT account on my behalf with my e-mail ID and/or mobile number, provided under the Card application. MMT shall update me with details of the new MMT account and steps to access the new MMT account by way of an SMS and/or e-mail. For Credit Card 11.Issuance of the said Credit Card is at the sole discretion of ICICI Bank Ltd. The credit limits on the Credit Card account will be fixed by the bank based on my income documents. 12.The Cardholder shall be entitled to apply for a review /enhancement/reduction of the credit Limit and/or Cash Limit (if provided by ICICI Bank), upon completion of 12 months of his/her membership. Alterations upon such review, if any, of the Credit Limit and/or Cash Limit will be at the sole discretion of ICICI Bank ICICI Bank shall at its sole discretion be. entitled to review (including enhancement or reduction) of the Credit Limit and/or Cash Limit assigned on the Card at any time & only enhancements, if any, to the Credit Limit &/or the Cash Limit, shall be effected by ICICI Bank with the consent of the Cardholder. END USE DECLARATION I hereby represent, warrant and confirm that the loan has been taken for a valid purpose and is not speculative or illegal in any manner. I also declare that funds under the facility will not be used towards purchase of gold in any form, including primary gold, gold bullion, gold jewellery, gold coins, units of gold exchange traded funds(ETF) and units of gold, mutual funds etc. The facility either in part or full will not be used for investment in capital market, land acquisition, promoters contribution in the project or any other purpose, which is prohibited or any illegal activity. I further agree, confirm and undertake that the purpose of use of funds under the loan shall not be changed in any manner during the tenor of loan, or that such change in purpose shall take place only with the prior written permission of ICICI Bank. I agree that any breach or default in complying with all or any of the aforesaid undertaking(s) will constitute an event of default under the facility documents. 93446973636C61696D65723A20506F696E7420313120746F31392061726520666F72204372656469742043617264206170706C69636174696F6E206F6E6C799420 DETAILS OF CHARGES Interest Rate* % per annum Processing Fee(Non refundable)* up to 2.25% of loan amount plus GST if others please specify Prepayment Charges* 5% of principal outstanding plus GST if others please specify *(Subject to change as per bank\'s discretion from time to time) Note: Please visit http://www.icicibank.com for detailed charges & fees under the respective loan product. Changes 696E20636861726765732066726F6D2074696D6520746F2074696D65206172652075706461746564206F6E2062616E6B927320776562736974652E Name:CHOPPADANDI SAGAR 2023-03-13 12:57:04.0 OTP sent on ******6863', 'Texas', 41, 24, 0, NULL, 0, '2023-04-19 01:34:45', NULL);
INSERT INTO `resumes` (`id`, `profile_id`, `total_exp`, `profile_title`, `filename`, `resume`, `location`, `emp_type_id`, `visa_type_id`, `in_place`, `in_block_list`, `in_hotlist`, `created_at`, `updated_at`) VALUES
(309, 570262, 8, 'DOT Net Developer', 'uploads/resumes/2023/04/18/570262_184759_7446.pdf', 'EP003054300 Sourcing Channel PERSONAL LOAN Branches APPLICATION FORM DSA Alternate .Please use CAPITAL LETTERS only. .Please Tick wherever Applicable. .All fields are mandatory. FOR BANK USE ONLY SOL ID 0040 RM NAME SRI KUMAR-90021812 Employee No. 568631 Date Channel Name PL-XSELL Executive Name ERIGIRALA BHASKER Executive Code IPRO005079O01472 DSA Code BRANCH-0040 VSTS Code CRM ID/IKART ID Application Type: New Update KYC Number 30032229968415 (Mandatory for KYC update request) Account Type: Normal PERSONAL DETAILS Title Mr. Mrs. Miss _________ Others APPLICANT CO-APPLICANT Name CHOPPADANDI SAGAR Maiden Name Father\'s Name LACHAIAH CHOPPADANDI Mother\'s Name MALLAMMA Spouse Name DOB Date of birth 09-09-1988 Gender: Male Female Transgender | Religion: HINDU Education Professional Diploma Holder Graduate Post Graduate Under Graduate/Matriculate Customer Category General SC ST OBC Other __________ | Marital Status: Married Single Others______ Residence Address 8-4-369/BN/334,1,BANJARA NAGAR,BORABANDA,,KAVITHA VIDHYANIKETHANSCHOOL City/Town/Village HYDERABAD District K V RANGAREDDY Nearest Landmark State TELANGANA PIN 500018 Tel( R ) - Residence is Self Owned Rented Company provided Other ________________ Residence Type Bunglow(B) Row House(R) Flat(F) Other(O) ________________ No.of years at above residence 5 Yrs 0 Months Tick,if Permanent Address is same as Residence Address Permanent Address BOTLAVANAPARTHY KARIMNAGAR,BOTLAVANAPARTHY City/Town/Village KARIMNAGAR District KARIMNAGAR Landmark State TELANGANA PIN 505187 Tel( R ) - Location Category Rural Semi Urban Urban Metro Additional Address BOTLAVANAPARTHY KARIMNAGAR,BOTLAVANAPARTHY District KARIMNAGAR City/Town/Village KARIMNAGAR State TELANGANA PIN 505187 Nearest Landmark Tel( R ) - Mobile No. 8106176863 Email ID SAGARHIMIC@GMAIL.COM Gross Income 10 to 20 lakhs (per annum) UID No XXXX-XXXX-6133 Citizenship IN-Indian Others (ISO 3166 Country Code) No. of Dependents Residential Status Non-resident Individual Person of Indian Origin Foreign National Resident Individual PREFERRED MAILING ADDRESS Subscription for statement by Email/Mobile Alerts Residence (R) Office (O) Name:CHOPPADANDI SAGAR 2023-03-13 12:57:04.0 OTP sent on ******6863 EP003054300 Sourcing Channel PERSONAL LOAN Branches APPLICATION FORM DSA Alternate .Please use CAPITAL LETTERS only. .Please Tick wherever Applicable. .All fields are mandatory. FOR BANK USE ONLY SOL ID 0040 RM NAME SRI KUMAR-90021812 Employee No. 568631 Date Channel Name PL-XSELL Executive Name ERIGIRALA BHASKER Executive Code IPRO005079O01472 DSA Code BRANCH-0040 VSTS Code CRM ID/IKART ID Application Type: New Update KYC Number 30032229968415 (Mandatory for KYC update request) Account Type: Normal PERSONAL DETAILS Title Mr. Mrs. Miss _________ Others APPLICANT CO-APPLICANT Name CHOPPADANDI SAGAR Maiden Name Father\'s Name LACHAIAH CHOPPADANDI Mother\'s Name MALLAMMA Spouse Name DOB Date of birth 09-09-1988 Gender: Male Female Transgender | Religion: HINDU Education Professional Diploma Holder Graduate Post Graduate Under Graduate/Matriculate Customer Category General SC ST OBC Other __________ | Marital Status: Married Single Others______ Residence Address 8-4-369/BN/334,1,BANJARA NAGAR,BORABANDA,,KAVITHA VIDHYANIKETHANSCHOOL City/Town/Village HYDERABAD District K V RANGAREDDY Nearest Landmark State TELANGANA PIN 500018 Tel( R ) - Residence is Self Owned Rented Company provided Other ________________ Residence Type Bunglow(B) Row House(R) Flat(F) Other(O) ________________ No.of years at above residence 5 Yrs 0 Months Tick,if Permanent Address is same as Residence Address Permanent Address BOTLAVANAPARTHY KARIMNAGAR,BOTLAVANAPARTHY City/Town/Village KARIMNAGAR District KARIMNAGAR Landmark State TELANGANA PIN 505187 Tel( R ) - Location Category Rural Semi Urban Urban Metro Additional Address BOTLAVANAPARTHY KARIMNAGAR,BOTLAVANAPARTHY District KARIMNAGAR City/Town/Village KARIMNAGAR State TELANGANA PIN 505187 Nearest Landmark Tel( R ) - Mobile No. 8106176863 Email ID SAGARHIMIC@GMAIL.COM Gross Income 10 to 20 lakhs (per annum) UID No XXXX-XXXX-6133 Citizenship IN-Indian Others (ISO 3166 Country Code) No. of Dependents Residential Status Non-resident Individual Person of Indian Origin Foreign National Resident Individual PREFERRED MAILING ADDRESS Subscription for statement by Email/Mobile Alerts Residence (R) Office (O) Name:CHOPPADANDI SAGAR 2023-03-13 12:57:04.0 OTP sent on ******6863 DETAILS OF FACILITY REQUIRED* Credit Facility Amount 1000000 Tenure 48 Months *Subject to Approval Purpose of Facility Education Travel Occasion in Family Purchase of Household/ Electronic Goods Home Renovation / Extension _________________ Others HE-PERSONAL USE Utilisation District K V RANGAREDDY Utilisation Taluka Occupation OTHERS Division OTHERS Sub Division OTHERS Activity OTHERS OCCUPATIONAL DETAILS Private Sector Public Sector Government Sector Occupation Retired Housewife Salaried _________________ Others If Salaried / Constitution Type of company Occupation Name Pvt.Ltd. Partnership Proprietor Public Ltd. Ltd. Liability co. Retailers PSU Govt MNC Others_______ Automobile Agriculture based Banking BPO Capital goods Telecom IT Retail Real Estate Consumer Durables FMCG NBFC Marketing/Adv. Pharma Media Other_ Education Electricity,gas&water supply Health&Social Work Fishing Mining&Quarrying Transportation Public Administrations / Defense Hospitality Trader / Distributor Comm. Agent Retailer Employer Details Designation: OTHER Total Exp injob: 8 Yrs 0 Months Exp.in Currentjob: 2 Yrs 5 Months Emp ID 31257 Company/Employer Name OTHERS-USM BUSINESS SYSTEMS Company/Employer Address 8-2-293/82 USM BUSINESS SYSTEMS A/270E NROAD NO 10 GAYATRI HILLS JUBILEE HILLS Landmark RD NO 10 City HYDERABAD PIN Code 500033 State TELANGANA Country INDIA Tel(0) - Mobile 8106176863 Office e-mail ID SAGARC@USMSYSTEMS.COM BANK DETAILS (Primary Bank) Name of Bank ICICI BANK LTD Branch BALANAGAR BRANCH A/C. No. 111501505590 UPI/VPA Account Type Saving Current OC/CC if Overdraft,Limit: No.of years: Existing relationship with ICICI: CC HH AL PL ENACH Registration Mode: Net Banking Debit Card PROOF OF IDENTITY(POI) (Certified copy of any one of the following POI needs to be submitted) A-Passport Number Expiry Date B-Voter ID Card C-National Population Register Letter D - Driving License Expiry Date E-UID( Aadhar) 6133 or VID No. F-NREGA Job Card Z-Other(any docment notified by government) Identification No. S-Simplified Measures Account-Document Type Code Identification No. PROOF OF ADDRESS(POA) Current/ Permanent/ Overseas Address Details (Certified copy of any one of the following POA needs to be submitted) Address Type Residential Business Registered Office Unspecified Proof of Address Passport Driving License UID(Aadhar) Voter ID card NREGA Job Card National Population Register Letter Other Simplified Measures account- Document Type Code Current address(correspondence/local address):State/ UT code: TELANGANA ISO 3166 Country Code INDIA Permanent Address: State/ UT code: TELANGANA ISO 3166 Country code: INDIA Overseas Address: ISO 3166 Country code Name:CHOPPADANDI SAGAR 2023-03-13 12:57:04.0 OTP sent on ******6863 DETAILS OF FACILITY REQUIRED* Credit Facility Amount 1000000 Tenure 48 Months *Subject to Approval Purpose of Facility Education Travel Occasion in Family Purchase of Household/ Electronic Goods Home Renovation / Extension _________________ Others HE-PERSONAL USE Utilisation District K V RANGAREDDY Utilisation Taluka Occupation OTHERS Division OTHERS Sub Division OTHERS Activity OTHERS OCCUPATIONAL DETAILS Private Sector Public Sector Government Sector Occupation Retired Housewife Salaried _________________ Others If Salaried / Constitution Type of company Occupation Name Pvt.Ltd. Partnership Proprietor Public Ltd. Ltd. Liability co. Retailers PSU Govt MNC Others_______ Automobile Agriculture based Banking BPO Capital goods Telecom IT Retail Real Estate Consumer Durables FMCG NBFC Marketing/Adv. Pharma Media Other_ Education Electricity,gas&water supply Health&Social Work Fishing Mining&Quarrying Transportation Public Administrations / Defense Hospitality Trader / Distributor Comm. Agent Retailer Employer Details Designation: OTHER Total Exp injob: 8 Yrs 0 Months Exp.in Currentjob: 2 Yrs 5 Months Emp ID 31257 Company/Employer Name OTHERS-USM BUSINESS SYSTEMS Company/Employer Address 8-2-293/82 USM BUSINESS SYSTEMS A/270E NROAD NO 10 GAYATRI HILLS JUBILEE HILLS Landmark RD NO 10 City HYDERABAD PIN Code 500033 State TELANGANA Country INDIA Tel(0) - Mobile 8106176863 Office e-mail ID SAGARC@USMSYSTEMS.COM BANK DETAILS (Primary Bank) Name of Bank ICICI BANK LTD Branch BALANAGAR BRANCH A/C. No. 111501505590 UPI/VPA Account Type Saving Current OC/CC if Overdraft,Limit: No.of years: Existing relationship with ICICI: CC HH AL PL ENACH Registration Mode: Net Banking Debit Card PROOF OF IDENTITY(POI) (Certified copy of any one of the following POI needs to be submitted) A-Passport Number Expiry Date B-Voter ID Card C-National Population Register Letter D - Driving License Expiry Date E-UID( Aadhar) 6133 or VID No. F-NREGA Job Card Z-Other(any docment notified by government) Identification No. S-Simplified Measures Account-Document Type Code Identification No. PROOF OF ADDRESS(POA) Current/ Permanent/ Overseas Address Details (Certified copy of any one of the following POA needs to be submitted) Address Type Residential Business Registered Office Unspecified Proof of Address Passport Driving License UID(Aadhar) Voter ID card NREGA Job Card National Population Register Letter Other Simplified Measures account- Document Type Code Current address(correspondence/local address):State/ UT code: TELANGANA ISO 3166 Country Code INDIA Permanent Address: State/ UT code: TELANGANA ISO 3166 Country code: INDIA Overseas Address: ISO 3166 Country code Name:CHOPPADANDI SAGAR 2023-03-13 12:57:04.0 OTP sent on ******6863 INSURANCE INTENT DECLARATION I/We hereby declare that I/We would like to opt for insurance plan offered by insurance company in association with ICICI Bank.I/ We have carefully read and understood the contents of brochure. I/We have understood that the insurance premium shall be deducted from the loan amount sanctioned by ICICI Bank and I hereby authorize ICICI Bank to deduct the insurance premium from sanctioned loan amount and disburse only the remaining loan amount. I confirm that I am voluntarily participating in this programme and am aware that the loan is available without insurance as well Signature of the Applicant CONSENT FOR ICICI BANK(GDPR Declaration) Yes for ICICI Group Companies Yes for partners of ICICI Bank Yes for both Not for both Mode of marketing By E-Mail By Post By SMS/Text By Social Media By Telephone / Call By Whatsapp No to marketing by all Yes to marketing by all TICK YOUR CHOICE OF CARD* (Tick just one) Signature of the Applicant Product Net Monthly Income(*) Joining Fee Annual Fee (2nd year Onwards) Minimum Spends for Annual fee reversal Large Pricing ICICI Bank Sapphtro CreditCard 1,50,000 and above NIL 3500 5,00,000 412 TW ICICI Bank Rubyx CreditCard 45,000 and above NIL 2500 3,00,000 435 TS ICICI Bank Coral CreditCard 20,000 and above NIL 500 1,50,000 365 PW ICICI Bank Maturity Trip Platinum Card 20,000 and above 500 NA NA 443 JF ICICI Bank Manchester United Platinum Card 20,000 and above 499 NA 1,25,000 418 PF FEES & CHARGES* Overdue Interest on extended credit Interest on cash advances Monthly Annual Monthly Annual ICICI Bank Card 3.40% 40.80% 3.40% 40.80% Subscription for statement by Email Mobile Alerts *GST Charges are Applicable Name to be printed on Credit Card*(Maximum 19 characters, including spaces) REFERENCES (PREFERABLY FRIEND/COLLEAGUE) 1. Name Relationship Address Pincode Email ID Tel/Mob No. Name:CHOPPADANDI SAGAR 2023-03-13 12:57:04.0 OTP sent on ******6863 INSURANCE INTENT DECLARATION I/We hereby declare that I/We would like to opt for insurance plan offered by insurance company in association with ICICI Bank.I/ We have carefully read and understood the contents of brochure. I/We have understood that the insurance premium shall be deducted from the loan amount sanctioned by ICICI Bank and I hereby authorize ICICI Bank to deduct the insurance premium from sanctioned loan amount and disburse only the remaining loan amount. I confirm that I am voluntarily participating in this programme and am aware that the loan is available without insurance as well Signature of the Applicant CONSENT FOR ICICI BANK(GDPR Declaration) Yes for ICICI Group Companies Yes for partners of ICICI Bank Yes for both Not for both Mode of marketing By E-Mail By Post By SMS/Text By Social Media By Telephone / Call By Whatsapp No to marketing by all Yes to marketing by all TICK YOUR CHOICE OF CARD* (Tick just one) Signature of the Applicant Product Net Monthly Income(*) Joining Fee Annual Fee (2nd year Onwards) Minimum Spends for Annual fee reversal Large Pricing ICICI Bank Sapphtro CreditCard 1,50,000 and above NIL 3500 5,00,000 412 TW ICICI Bank Rubyx CreditCard 45,000 and above NIL 2500 3,00,000 435 TS ICICI Bank Coral CreditCard 20,000 and above NIL 500 1,50,000 365 PW ICICI Bank Maturity Trip Platinum Card 20,000 and above 500 NA NA 443 JF ICICI Bank Manchester United Platinum Card 20,000 and above 499 NA 1,25,000 418 PF FEES & CHARGES* Overdue Interest on extended credit Interest on cash advances Monthly Annual Monthly Annual ICICI Bank Card 3.40% 40.80% 3.40% 40.80% Subscription for statement by Email Mobile Alerts *GST Charges are Applicable Name to be printed on Credit Card*(Maximum 19 characters, including spaces) REFERENCES (PREFERABLY FRIEND/COLLEAGUE) 1. Name Relationship Address Pincode Email ID Tel/Mob No. Name:CHOPPADANDI SAGAR 2023-03-13 12:57:04.0 OTP sent on ******6863 DECLARATION I/We have no objection to ICICI Bank Limited, its group companies, agents/representatives to provide me/us information on various products, offers & services provided by ICICI Bank Limited/ its group companies through any mode (including without limitation through telephone calls/ SMSs/emails) and authorize ICICI Bank Limited, Its group companies, agents I representatives for the above purpose. Please tick Yes or No, as acceptable# Yes No COMMON DECLARATIONS 1. I/We declare that all the particulars and information and details given/filled in this application form are true, correct,complete and up- to-date in all respects and that I/We have notwithheld any information whatsoever. 13. II/We declare and undertake that the Credit Cards issued to me /us,if used overseas, shall be utilised strictly in accordance with the relevant exchange control regulations issued & as amended by the Reserve Bank of India(RBI) from time to time. In the event I/we exceed my/our entitlements as per the exchange control guide-lines of RBI, I/we undertake to bring the same immediately to the notice of ICICI Bank Limited in writing. Further, I/we also agree and understand that if I/we am/are required to get my/our passport endorsed for any charges incurred by me/us as stipulated by RBI, the onus of getting my/our passport endorsed shall lie entirely on me /us. In the event of any failure to comply with the prevailing exchange control guidelines issued by RBI to me/us, I/we shall be liable for any action under the Foreign Exchange Management Act, 1999, as amended and be debarred from the Credit Card facility either at ICICI Bank Limited instance or by RBI. 2. I hereby declare that the details furnished above are true and correct to the best of my knowledge and belief and I undertake to inform you of any changes therein, immediately. In case any of the above information is found to be false or untrue or misleading or misrepresenting. I am aware that I may be held liable for it. 3. I hereby consent to receiving information from Central KYC Registry through SMS / Email on the above registered number/email address. 4. I/ We confirm that no insolvency proceedings or suits for recovery of outstanding dues or monies whatsoever and/ or any criminal proceedings have been initiated and/or are pending against me/us and that I / we have been never adjudicated insolvent by any court or other authority. 5. No action nor other steps have been taken or legal proceedings started by or against me/us in any court of law/ other authorities for Winding up, dissolution, administration or reorganization or for the appointment of a receiver, administrator, administrative receiver, trustee or similar officer or for my/our assets. 14. In the event of a Credit Card programme closure or at the time of renewal of Credit Card, ICICI Bank Limited at its sole discretion reserves the right to provide a card type that is different from the existing card type held by the Cardholder. The credit limits and cash limits on any Credit Card at any point in time are as per sole discretion of ICICI Bank Limited. The card application shall continue to be valid for any replacement card provided at the time of closure/renewal. Internationally valid Card and all other Cards cannot be used on Internet or otherwise for purchase of prohibited items like lottery tickets, banned or proscribed magazines, participation in sweepstakes, payment for callback services, remittance in any form towards overseas forex trading, margin calls to overseas exchanges/overseas counter party, trading in foreign exchange in domestic/overseas markets etc. 6. I/We declare that I/we have not made any payment in cash, bearer cheque or kind along with or in connection with this application to the executive or kind along with or in connection with this application to the executive such payment made by us to the executive collecting this application. 7. l/We understand and confirm that the Application Form and all other documents submitted by me/us to ICICI Bank shall not be returned to me/us and ICICI Bank shall have the right to retain the same. 8. I/ We authorize ICICI Bank Limited (ICICI Bank) and their agents to exchange, share or part with all information and data maintained with ICICI Bank relating to my/ our existing account related information including existing or prior loans and repayment history to other ICICI group companies, banks, financial institutions, credit bureau, agencies, mobile network operators directly or indirectly, statutory bodies and other service providers of ICICI Bank as may be required and I/We shall not hold ICICI Bank (or any of its group companies) liable for sharing such information. 15.I/We have read the application form and brochures and am/are aware of all the terms / conditions of availing finance from ICICI Bank Limited. I/We authorise ICICI Bank Limited to make references and enquiries related to information in this application which, ICICI Bank Limited consider necessary. I/We undertake to inform ICICI Bank Limited regarding change in my/our residence /employment and to provide any further information that ICICI Bank Limited may require. I confirm that I have gone through all the Terms& Conditions, Most Important Terms & Conditions and Important Credit Card Declaration and hereby agree to abide by the same. 16.For cash withdrawals, interests will be charged from the day of transaction and no free credit period will be provided. 17.I hereby give consent to ICICI Bank for linking my ICICI Bank credit card with my existing ICICI Bank savings/current account, if any. I understand that this would enable me to access my ICICI Bank credit card account using the existing user ID provided to me under my ICICI Bank savings/current account, if any, through internet banking and iMobile facility. I further understand that I may delink my ICICI Bank savings/current account from my ICICI credit card by calling ICICI Customer Care number available at www.icicibank.com 18.I understand that under the alert facility,ICICI Bank will enable me to receive customer message alerts with respect to events/ transactions relating to my Credit Card or informational/ promotional mail that will be useful to me over my mobile phone or through e-mail. I agree to receive communication on my alternate e- mail ID in case the alert messages with respect to any event / transaction are not delivered to my preferred e-mail ID.(subject to information provided in the Application Form). I agree to abide by the Terms & Conditions of ICICI Bank in this regard. 9. I/We understand and acknowledge that ICICI Bank shall have the absolute discretion, without assigning any reasons (unless required by applicable law), to reject our application and that ICICI Bank shall not be responsible/liable in any manner whatsoever to me/us for such rejection or any delay in notifying me/us of such rejection and any costs, losses, damages or expenses, or other consequences, caused by reason of such rejection, or any delay in notifying me/us of such rejection,of our application. 10. Except to the extent disclosed to ICICI Bank, no director or a relative/near relation (as specified by RBI) of a director of a banking company (including ICICI Bank) or a relative/near relation (as specified by RBI) of a senior officer of ICICI Bank (as specified by RBI) is the Applicant(s),or a partner of concern, or of our subsidiary, or our holding company, or a guarantor on my/our behalf, or holds substantial interest in our concern or my/our subsidiary or holding company. DECLARATION I/We have no objection to ICICI Bank Limited, its group companies, agents/representatives to provide me/us information on various products, offers & services provided by ICICI Bank Limited/ its group companies through any mode (including without limitation through telephone calls/ SMSs/emails) and authorize ICICI Bank Limited, Its group companies, agents I representatives for the above purpose. Please tick Yes or No, as acceptable# Yes No COMMON DECLARATIONS 1. I/We declare that all the particulars and information and details given/filled in this application form are true, correct,complete and up- to-date in all respects and that I/We have notwithheld any information whatsoever. 13. II/We declare and undertake that the Credit Cards issued to me /us,if used overseas, shall be utilised strictly in accordance with the relevant exchange control regulations issued & as amended by the Reserve Bank of India(RBI) from time to time. In the event I/we exceed my/our entitlements as per the exchange control guide-lines of RBI, I/we undertake to bring the same immediately to the notice of ICICI Bank Limited in writing. Further, I/we also agree and understand that if I/we am/are required to get my/our passport endorsed for any charges incurred by me/us as stipulated by RBI, the onus of getting my/our passport endorsed shall lie entirely on me /us. In the event of any failure to comply with the prevailing exchange control guidelines issued by RBI to me/us, I/we shall be liable for any action under the Foreign Exchange Management Act, 1999, as amended and be debarred from the Credit Card facility either at ICICI Bank Limited instance or by RBI. 2. I hereby declare that the details furnished above are true and correct to the best of my knowledge and belief and I undertake to inform you of any changes therein, immediately. In case any of the above information is found to be false or untrue or misleading or misrepresenting. I am aware that I may be held liable for it. 3. I hereby consent to receiving information from Central KYC Registry through SMS / Email on the above registered number/email address. 4. I/ We confirm that no insolvency proceedings or suits for recovery of outstanding dues or monies whatsoever and/ or any criminal proceedings have been initiated and/or are pending against me/us and that I / we have been never adjudicated insolvent by any court or other authority. 5. No action nor other steps have been taken or legal proceedings started by or against me/us in any court of law/ other authorities for Winding up, dissolution, administration or reorganization or for the appointment of a receiver, administrator, administrative receiver, trustee or similar officer or for my/our assets. 14. In the event of a Credit Card programme closure or at the time of renewal of Credit Card, ICICI Bank Limited at its sole discretion reserves the right to provide a card type that is different from the existing card type held by the Cardholder. The credit limits and cash limits on any Credit Card at any point in time are as per sole discretion of ICICI Bank Limited. The card application shall continue to be valid for any replacement card provided at the time of closure/renewal. Internationally valid Card and all other Cards cannot be used on Internet or otherwise for purchase of prohibited items like lottery tickets, banned or proscribed magazines, participation in sweepstakes, payment for callback services, remittance in any form towards overseas forex trading, margin calls to overseas exchanges/overseas counter party, trading in foreign exchange in domestic/overseas markets etc. 6. I/We declare that I/we have not made any payment in cash, bearer cheque or kind along with or in connection with this application to the executive or kind along with or in connection with this application to the executive such payment made by us to the executive collecting this application. 7. l/We understand and confirm that the Application Form and all other documents submitted by me/us to ICICI Bank shall not be returned to me/us and ICICI Bank shall have the right to retain the same. 8. I/ We authorize ICICI Bank Limited (ICICI Bank) and their agents to exchange, share or part with all information and data maintained with ICICI Bank relating to my/ our existing account related information including existing or prior loans and repayment history to other ICICI group companies, banks, financial institutions, credit bureau, agencies, mobile network operators directly or indirectly, statutory bodies and other service providers of ICICI Bank as may be required and I/We shall not hold ICICI Bank (or any of its group companies) liable for sharing such information. 15.I/We have read the application form and brochures and am/are aware of all the terms / conditions of availing finance from ICICI Bank Limited. I/We authorise ICICI Bank Limited to make references and enquiries related to information in this application which, ICICI Bank Limited consider necessary. I/We undertake to inform ICICI Bank Limited regarding change in my/our residence /employment and to provide any further information that ICICI Bank Limited may require. I confirm that I have gone through all the Terms& Conditions, Most Important Terms & Conditions and Important Credit Card Declaration and hereby agree to abide by the same. 16.For cash withdrawals, interests will be charged from the day of transaction and no free credit period will be provided. 17.I hereby give consent to ICICI Bank for linking my ICICI Bank credit card with my existing ICICI Bank savings/current account, if any. I understand that this would enable me to access my ICICI Bank credit card account using the existing user ID provided to me under my ICICI Bank savings/current account, if any, through internet banking and iMobile facility. I further understand that I may delink my ICICI Bank savings/current account from my ICICI credit card by calling ICICI Customer Care number available at www.icicibank.com 18.I understand that under the alert facility,ICICI Bank will enable me to receive customer message alerts with respect to events/ transactions relating to my Credit Card or informational/ promotional mail that will be useful to me over my mobile phone or through e-mail. I agree to receive communication on my alternate e- mail ID in case the alert messages with respect to any event / transaction are not delivered to my preferred e-mail ID.(subject to information provided in the Application Form). I agree to abide by the Terms & Conditions of ICICI Bank in this regard. 9. I/We understand and acknowledge that ICICI Bank shall have the absolute discretion, without assigning any reasons (unless required by applicable law), to reject our application and that ICICI Bank shall not be responsible/liable in any manner whatsoever to me/us for such rejection or any delay in notifying me/us of such rejection and any costs, losses, damages or expenses, or other consequences, caused by reason of such rejection, or any delay in notifying me/us of such rejection,of our application. 10. Except to the extent disclosed to ICICI Bank, no director or a relative/near relation (as specified by RBI) of a director of a banking company (including ICICI Bank) or a relative/near relation (as specified by RBI) of a senior officer of ICICI Bank (as specified by RBI) is the Applicant(s),or a partner of concern, or of our subsidiary, or our holding company, or a guarantor on my/our behalf, or holds substantial interest in our concern or my/our subsidiary or holding company. 202031392E492068657265627920617574686F726973652049434943492042616E6B204C746420289349434943492042616E6B942920746F207368617265206D7920 data or information associated with my MakeMyTrip ICICI Bank 437265646974204361726420282243617264206170706C69636174696F6E94292028692920452D6D61696C2049443B2028696929204D6F62696C65206E756D6265723B2020 (iii) Card variant availed of (Platinum); (iv) Credit Card account number with MakeMyTrip (India) Private Limited and its affiliates 28934D4D54942920746F2075706461746520697473207265636F72647320616E642070726F76696465206D652073657276696365732C207265776172647320262020 benefits with respect to the Card. E-mail ID provided by me in the Card application does not have a corresponding MMT account, MMT shall provide me with services, rewards & benefits associated with the Card on my MMT account linked to my mobile number. In case my e-mail ID or mobile number are not present in any MMT account, MMT shall create a new MMT account on my behalf with my e-mail ID and/or mobile number, provided under the Card application. MMT shall update me with details of the new MMT account and steps to access the new MMT account by way of an SMS and/or e-mail. For Credit Card 11.Issuance of the said Credit Card is at the sole discretion of ICICI Bank Ltd. The credit limits on the Credit Card account will be fixed by the bank based on my income documents. 12.The Cardholder shall be entitled to apply for a review /enhancement/reduction of the credit Limit and/or Cash Limit (if provided by ICICI Bank), upon completion of 12 months of his/her membership. Alterations upon such review, if any, of the Credit Limit and/or Cash Limit will be at the sole discretion of ICICI Bank ICICI Bank shall at its sole discretion be. entitled to review (including enhancement or reduction) of the Credit Limit and/or Cash Limit assigned on the Card at any time & only enhancements, if any, to the Credit Limit &/or the Cash Limit, shall be effected by ICICI Bank with the consent of the Cardholder. END USE DECLARATION I hereby represent, warrant and confirm that the loan has been taken for a valid purpose and is not speculative or illegal in any manner. I also declare that funds under the facility will not be used towards purchase of gold in any form, including primary gold, gold bullion, gold jewellery, gold coins, units of gold exchange traded funds(ETF) and units of gold, mutual funds etc. The facility either in part or full will not be used for investment in capital market, land acquisition, promoters contribution in the project or any other purpose, which is prohibited or any illegal activity. I further agree, confirm and undertake that the purpose of use of funds under the loan shall not be changed in any manner during the tenor of loan, or that such change in purpose shall take place only with the prior written permission of ICICI Bank. I agree that any breach or default in complying with all or any of the aforesaid undertaking(s) will constitute an event of default under the facility documents. 93446973636C61696D65723A20506F696E7420313120746F31392061726520666F72204372656469742043617264206170706C69636174696F6E206F6E6C799420 DETAILS OF CHARGES Interest Rate* % per annum Processing Fee(Non refundable)* up to 2.25% of loan amount plus GST if others please specify Prepayment Charges* 5% of principal outstanding plus GST if others please specify *(Subject to change as per bank\'s discretion from time to time) Note: Please visit http://www.icicibank.com for detailed charges & fees under the respective loan product. Changes 696E20636861726765732066726F6D2074696D6520746F2074696D65206172652075706461746564206F6E2062616E6B927320776562736974652E Name:CHOPPADANDI SAGAR 2023-03-13 12:57:04.0 OTP sent on ******6863 202031392E492068657265627920617574686F726973652049434943492042616E6B204C746420289349434943492042616E6B942920746F207368617265206D7920 data or information associated with my MakeMyTrip ICICI Bank 437265646974204361726420282243617264206170706C69636174696F6E94292028692920452D6D61696C2049443B2028696929204D6F62696C65206E756D6265723B2020 (iii) Card variant availed of (Platinum); (iv) Credit Card account number with MakeMyTrip (India) Private Limited and its affiliates 28934D4D54942920746F2075706461746520697473207265636F72647320616E642070726F76696465206D652073657276696365732C207265776172647320262020 benefits with respect to the Card. E-mail ID provided by me in the Card application does not have a corresponding MMT account, MMT shall provide me with services, rewards & benefits associated with the Card on my MMT account linked to my mobile number. In case my e-mail ID or mobile number are not present in any MMT account, MMT shall create a new MMT account on my behalf with my e-mail ID and/or mobile number, provided under the Card application. MMT shall update me with details of the new MMT account and steps to access the new MMT account by way of an SMS and/or e-mail. For Credit Card 11.Issuance of the said Credit Card is at the sole discretion of ICICI Bank Ltd. The credit limits on the Credit Card account will be fixed by the bank based on my income documents. 12.The Cardholder shall be entitled to apply for a review /enhancement/reduction of the credit Limit and/or Cash Limit (if provided by ICICI Bank), upon completion of 12 months of his/her membership. Alterations upon such review, if any, of the Credit Limit and/or Cash Limit will be at the sole discretion of ICICI Bank ICICI Bank shall at its sole discretion be. entitled to review (including enhancement or reduction) of the Credit Limit and/or Cash Limit assigned on the Card at any time & only enhancements, if any, to the Credit Limit &/or the Cash Limit, shall be effected by ICICI Bank with the consent of the Cardholder. END USE DECLARATION I hereby represent, warrant and confirm that the loan has been taken for a valid purpose and is not speculative or illegal in any manner. I also declare that funds under the facility will not be used towards purchase of gold in any form, including primary gold, gold bullion, gold jewellery, gold coins, units of gold exchange traded funds(ETF) and units of gold, mutual funds etc. The facility either in part or full will not be used for investment in capital market, land acquisition, promoters contribution in the project or any other purpose, which is prohibited or any illegal activity. I further agree, confirm and undertake that the purpose of use of funds under the loan shall not be changed in any manner during the tenor of loan, or that such change in purpose shall take place only with the prior written permission of ICICI Bank. I agree that any breach or default in complying with all or any of the aforesaid undertaking(s) will constitute an event of default under the facility documents. 93446973636C61696D65723A20506F696E7420313120746F31392061726520666F72204372656469742043617264206170706C69636174696F6E206F6E6C799420 DETAILS OF CHARGES Interest Rate* % per annum Processing Fee(Non refundable)* up to 2.25% of loan amount plus GST if others please specify Prepayment Charges* 5% of principal outstanding plus GST if others please specify *(Subject to change as per bank\'s discretion from time to time) Note: Please visit http://www.icicibank.com for detailed charges & fees under the respective loan product. Changes 696E20636861726765732066726F6D2074696D6520746F2074696D65206172652075706461746564206F6E2062616E6B927320776562736974652E Name:CHOPPADANDI SAGAR 2023-03-13 12:57:04.0 OTP sent on ******6863', 'dallas', 41, 24, 0, NULL, 0, '2023-04-19 01:48:00', NULL),
(310, 570264, 11, 'PHP Developer', 'uploads/resumes/2023/05/24/570264_122402_4435.pdf', '', 'Texas', 41, 95, 0, NULL, 0, '2023-05-24 19:24:02', NULL);
INSERT INTO `resumes` (`id`, `profile_id`, `total_exp`, `profile_title`, `filename`, `resume`, `location`, `emp_type_id`, `visa_type_id`, `in_place`, `in_block_list`, `in_hotlist`, `created_at`, `updated_at`) VALUES
(311, 570265, 10, 'PHP developer', 'uploads/resumes/2023/06/14/570265_132600_1048.pdf', 'Trace-based Just-in-Time Type Specialization for Dynamic Languages Andreas Gal + , Brendan Eich , Mike Shaver , David Anderson , David Mandelin , Mohammad R. Haghighat $ , Blake Kaplan , Graydon Hoare , Boris Zbarsky , Jason Orendorff , Jesse Ruderman , Edwin Smith # , Rick Reitmaier # , Michael Bebenita + , Mason Chang + # , Michael Franz + Mozilla Corporation f gal,brendan,shaver,danderson,dmandelin,mrbkap,graydon,bz,jorendorff,jruderman g @mozilla.com Adobe Corporation # f edwsmith,rreitmai g @adobe.com Intel Corporation $ f mohammad.r.haghighat g @intel.com University of California, Irvine + f mbebenit,changm,franz g @uci.edu Abstract Dynamic languages such as JavaScript are more difcult to com- pile than statically typed ones. Since no concrete type information is available, traditional compilers need to emit generic code that can handle all possible type combinations at runtime. We present an al- ternative compilation technique for dynamically-typed languages that identies frequently executed loop traces at run-time and then generates machine code on the y that is specialized for the ac- tual dynamic types occurring on each path through the loop. Our method provides cheap inter-procedural type specialization, and an elegant and efcient way of incrementally compiling lazily discov- ered alternative paths through nested loops. We have implemented a dynamic compiler for JavaScript based on our technique and we have measured speedups of 10x and more for certain benchmark programs. Categories and Subject Descriptors D.3.4 [ Programming Lan- guages ]: Processors — Incremental compilers, code generation . General Terms Design, Experimentation, Measurement, Perfor- mance. Keywords JavaScript, just-in-time compilation, trace trees. 1. Introduction Dynamic languages such as JavaScript, Python, and Ruby, are pop- ular since they are expressive, accessible to non-experts, and make deployment as easy as distributing a source le. They are used for small scripts as well as for complex applications. JavaScript, for example, is the de facto standard for client-side web programming Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for prot or commercial advantage and that copies bear this notice and the full citation on the rst page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specic permission and/or a fee. PLDI\'09, June 15–20, 2009, Dublin, Ireland. Copyright c 2009 ACM 978-1-60558-392-1/09/06. . . $5.00 and is used for the application logic of browser-based productivity applications such as Google Mail, Google Docs and Zimbra Col- laboration Suite. In this domain, in order to provide a uid user experience and enable a new generation of applications, virtual ma- chines must provide a low startup time and high performance. Compilers for statically typed languages rely on type informa- tion to generate efcient machine code. In a dynamically typed pro- gramming language such as JavaScript, the types of expressions may vary at runtime. This means that the compiler can no longer easily transform operations into machine instructions that operate on one specic type. Without exact type information, the compiler must emit slower generalized machine code that can deal with all potential type combinations. While compile-time static type infer- ence might be able to gather type information to generate opti- mized machine code, traditional static analysis is very expensive and hence not well suited for the highly interactive environment of a web browser. We present a trace-based compilation technique for dynamic languages that reconciles speed of compilation with excellent per- formance of the generated machine code. Our system uses a mixed- mode execution approach: the system starts running JavaScript in a fast-starting bytecode interpreter. As the program runs, the system identies hot (frequently executedbytecode sequences, records them, and compiles them to fast native code. We call such a se- quence of instructions a trace . Unlike method-based dynamic compilers, our dynamic com- piler operates at the granularity of individual loops. This design choice is based on the expectation that programs spend most of their time in hot loops. Even in dynamically typed languages, we expect hot loops to be mostly type-stable , meaning that the types of values are invariant. (12For example, we would expect loop coun- ters that start as integers to remain integers for all iterations. When both of these expectations hold, a trace-based compiler can cover the program execution with a small number of type-specialized, ef- ciently compiled traces. Each compiled trace covers one path through the program with one mapping of values to types. When the VM executes a compiled trace, it cannot guarantee that the same path will be followed or that the same types will occur in subsequent loop iterations. Hence, recording and compiling a trace speculates that the path and typing will be exactly as they were during recording for subsequent iterations of the loop. Every compiled trace contains all the guards (checksrequired to validate the speculation. If one of the guards fails (if control ow is different, or a value of a different type is generatedthe trace exits. If an exit becomes hot, the VM can record a branch trace starting at the exit to cover the new path. In this way, the VM records a trace tree covering all the hot paths through the loop. Nested loops can be difcult to optimize for tracing VMs. In a na ¨ ve implementation, inner loops would become hot rst, and the VM would start tracing there. When the inner loop exits, the VM would detect that a different branch was taken. The VM would try to record a branch trace, and nd that the trace reaches not the inner loop header, but the outer loop header. At this point, the VM could continue tracing until it reaches the inner loop header again, thus tracing the outer loop inside a trace tree for the inner loop. But this requires tracing a copy of the outer loop for every side exit and type combination in the inner loop. In essence, this is a form of unintended tail duplication, which can easily overow the code cache. Alternatively, the VM could simply stop tracing, and give up on ever tracing outer loops. We solve the nested loop problem by recording nested trace trees . Our system traces the inner loop exactly as the na ¨ ve version. The system stops extending the inner tree when it reaches an outer loop, but then it starts a new trace at the outer loop header. When the outer loop reaches the inner loop header, the system tries to call the trace tree for the inner loop. If the call succeeds, the VM records the call to the inner tree as part of the outer trace and nishes the outer trace as normal. In this way, our system can trace any number of loops nested to any depth without causing excessive tail duplication. These techniques allow a VM to dynamically translate a pro- gram to nested, type-specialized trace trees. Because traces can cross function call boundaries, our techniques also achieve the ef- fects of inlining. Because traces have no internal control-ow joins, they can be optimized in linear time by a simple compiler (10 Thus, our tracing VM efciently performs the same kind of op- timizations that would require interprocedural analysis in a static optimization setting. This makes tracing an attractive and effective tool to type specialize even complex function call-rich code. We implemented these techniques for an existing JavaScript in- terpreter, SpiderMonkey. We call the resulting tracing VM Trace- Monkey . TraceMonkey supports all the JavaScript features of Spi- derMonkey, with a 2x-20x speedup for traceable programs. This paper makes the following contributions: We explain an algorithm for dynamically forming trace trees to cover a program, representing nested loops as nested trace trees. We explain how to speculatively generate efcient type-specialized code for traces from dynamic language programs. We validate our tracing techniques in an implementation based on the SpiderMonkey JavaScript interpreter, achieving 2x-20x speedups on many programs. The remainder of this paper is organized as follows. Section 3 is a general overview of trace tree based compilation we use to cap- ture and compile frequently executed code regions. In Section 4 we describe our approach of covering nested loops using a num- ber of individual trace trees. In Section 5 we describe our trace- compilation based speculative type specialization approach we use to generate efcient machine code from recorded bytecode traces. Our implementation of a dynamic type-specializing compiler for JavaScript is described in Section 6. Related work is discussed in Section 8. In Section 7 we evaluate our dynamic compiler based on 1 for (var i = 2; i < 100; ++i{ 2 if (!primes[i] 3 continue; 4 for (var k = i + i; i < 100; k += i 5 primes[k] = false; 6 }Figure 1. Sample program: sieve of Eratosthenes. primes is initialized to an array of 100 false values on entry to this code snippet.Figure 2. State machine describing the major activities of Trace- Monkey and the conditions that cause transitions to a new activ- ity. In the dark box, TM executes JS as compiled traces. In the light gray boxes, TM executes JS in the standard interpreter. White boxes are overhead. Thus, to maximize performance, we need to maximize time spent in the darkest box and minimize time spent in the white boxes. The best case is a loop where the types at the loop edge are the same as the types on entry–then TM can stay in native code until the loop is done. a set of industry benchmarks. The paper ends with conclusions in Section 9 and an outlook on future work is presented in Section 10. 2. Overview: Example Tracing Run This section provides an overview of our system by describing how TraceMonkey executes an example program. The example program, shown in Figure 1, computes the rst 100 prime numbers with nested loops. The narrative should be read along with Figure 2, which describes the activities TraceMonkey performs and when it transitions between the loops. TraceMonkey always begins executing a program in the byte- code interpreter. Every loop back edge is a potential trace point. When the interpreter crosses a loop edge, TraceMonkey invokes the trace monitor , which may decide to record or execute a native trace. At the start of execution, there are no compiled traces yet, so the trace monitor counts the number of times each loop back edge is executed until a loop becomes hot , currently after 2 crossings. Note that the way our loops are compiled, the loop edge is crossed before entering the loop, so the second crossing occurs immediately after the rst iteration. Here is the sequence of events broken down by outer loop iteration: v0 := ld state[748] // load primes from the trace activation record st sp[0], v0 // store primes to interpreter stack v1 := ld state[764] // load k from the trace activation record v2 := i2f(v1// convert k from int to double st sp[8], v1 // store k to interpreter stack st sp[16], 0 // store false to interpreter stack v3 := ld v0[4] // load class word for primes v4 := and v3, -4 // mask out object class tag for primes v5 := eq v4, Array // test whether primes is an array xf v5 // side exit if v5 is false v6 := js_Array_set(v0, v2, false// call function to set array element v7 := eq v6, 0 // test return value from call xt v7 // side exit if js_Array_set returns false.Figure 3. LIR snippet for sample program. This is the LIR recorded for line 5 of the sample program in Figure 1. The LIR encodes the semantics in SSA form using temporary variables. The LIR also encodes all the stores that the interpreter would do to its data stack. Sometimes these stores can be optimized away as the stack locations are live only on exits to the interpreter. Finally, the LIR records guards and side exits to verify the assumptions made in this recording: that primes is an array and that the call to set its element succeeds. mov edx, ebx(748// load primes from the trace activation record mov edi(0edx // (*store primes to interpreter stack mov esi, ebx(764// load k from the trace activation record mov edi(8esi // (*store k to interpreter stack mov edi(160 // (*store false to interpreter stack mov eax, edx(4// (*load object class word for primes and eax, -4 // (*mask out object class tag for primes cmp eax, Array // (*test whether primes is an array jne side_exit_1 // (*side exit if primes is not an array sub esp, 8 // bump stack for call alignment convention push false // push last argument for call push esi // push first argument for call call js_Array_set // call function to set array element add esp, 8 // clean up extra stack space mov ecx, ebx // (*created by register allocator test eax, eax // (*test return value of js_Array_set je side_exit_2 // (*side exit if call failed ... side_exit_1: mov ecx, ebp(-4// restore ecx mov esp, ebp // restore esp jmp epilog // jump to ret statementFigure 4. x86 snippet for sample program. This is the x86 code compiled from the LIR snippet in Figure 3. Most LIR instructions compile to a single x86 instruction. Instructions marked with (* would be omitted by an idealized compiler that knew that none of the side exits would ever be taken. The 17 instructions generated by the compiler compare favorably with the 100+ instructions that the interpreter would execute for the same code snippet, including 4 indirect jumps. i=2. This is the rst iteration of the outer loop. The loop on lines 4-5 becomes hot on its second iteration, so TraceMonkey en- ters recording mode on line 4. In recording mode, TraceMonkey records the code along the trace in a low-level compiler intermedi- ate representation we call LIR . The LIR trace encodes all the oper- ations performed and the types of all operands. The LIR trace also encodes guards , which are checks that verify that the control ow and types are identical to those observed during trace recording. Thus, on later executions, if and only if all guards are passed, the trace has the required program semantics. TraceMonkey stops recording when execution returns to the loop header or exits the loop. In this case, execution returns to the loop header on line 4. After recording is nished, TraceMonkey compiles the trace to native code using the recorded type information for optimization. The result is a native code fragment that can be entered if the interpreter PC and the types of values match those observed when trace recording was started. The rst trace in our example, T 45 , covers lines 4 and 5. This trace can be entered if the PC is at line 4, i and k are integers, and primes is an object. After compiling T 45 , TraceMonkey returns to the interpreter and loops back to line 1. i=3. Now the loop header at line 1 has become hot, so Trace- Monkey starts recording. When recording reaches line 4, Trace- Monkey observes that it has reached an inner loop header that al- ready has a compiled trace, so TraceMonkey attempts to nest the inner loop inside the current trace. The rst step is to call the inner trace as a subroutine. This executes the loop on line 4 to completion and then returns to the recorder. TraceMonkey veries that the call was successful and then records the call to the inner trace as part of the current trace. Recording continues until execution reaches line 1, and at which point TraceMonkey nishes and compiles a trace for the outer loop, T 16 . i=4. On this iteration, TraceMonkey calls T 16 . Because i=4 , the if statement on line 2 is taken. This branch was not taken in the original trace, so this causes T 16 to fail a guard and take a side exit. The exit is not yet hot, so TraceMonkey returns to the interpreter, which executes the continue statement. i=5. TraceMonkey calls T 16 , which in turn calls the nested trace T 45 . T 16 loops back to its own header, starting the next iteration without ever returning to the monitor. i=6. On this iteration, the side exit on line 2 is taken again. This time, the side exit becomes hot, so a trace T 23 ; 1 is recorded that covers line 3 and returns to the loop header. Thus, the end of T 23 ; 1 jumps directly to the start of T 16 . The side exit is patched so that on future iterations, it jumps directly to T 23 ; 1 . At this point, TraceMonkey has compiled enough traces to cover the entire nested loop structure, so the rest of the program runs entirely as native code. 3. Trace Trees In this section, we describe traces, trace trees, and how they are formed at run time. Although our techniques apply to any dynamic language interpreter, we will describe them assuming a bytecode interpreter to keep the exposition simple. 3.1 Traces A trace is simply a program path, which may cross function call boundaries. TraceMonkey focuses on loop traces , that originate at a loop edge and represent a single iteration through the associated loop. Similar to an extended basic block, a trace is only entered at the top, but may have many exits. In contrast to an extended basic block, a trace can contain join nodes. Since a trace always only follows one single path through the original program, however, join nodes are not recognizable as such in a trace and have a single predecessor node like regular nodes. A typed trace is a trace annotated with a type for every variable (including temporarieson the trace. A typed trace also has an entry type map giving the required types for variables used on the trace before they are dened. For example, a trace could have a type map (x: int, b: boolean , meaning that the trace may be entered only if the value of the variable x is of type int and the value of b is of type boolean . The entry type map is much like the signature of a function. In this paper, we only discuss typed loop traces, and we will refer to them simply as “traces”. The key property of typed loop traces is that they can be compiled to efcient machine code using the same techniques used for typed languages. In TraceMonkey, traces are recorded in trace-avored SSA LIR (low-level intermediate representationIn trace-avored SSA (or TSSAphi nodes appear only at the entry point, which is reached both on entry and via loop edges. The important LIR primitives are constant values, memory loads and stores (by address and offsetinteger operators, oating-point operators, function calls, and conditional exits. Type conversions, such as integer to double, are represented by function calls. This makes the LIR used by TraceMonkey independent of the concrete type system and type conversion rules of the source language. The LIR operations are generic enough that the backend compiler is language independent. Figure 3 shows an example LIR trace. Bytecode interpreters typically represent values in a various complex data structures (e.g., hash tablesin a boxed format (i.e., with attached type tag bitsSince a trace is intended to represent efcient code that eliminates all that complexity, our traces oper- ate on unboxed values in simple variables and arrays as much as possible. A trace records all its intermediate values in a small activation record area. To make variable accesses fast on trace, the trace also imports local and global variables by unboxing them and copying them to its activation record. Thus, the trace can read and write these variables with simple loads and stores from a native activation recording, independently of the boxing mechanism used by the interpreter. When the trace exits, the VM boxes the values from this native storage location and copies them back to the interpreter structures. For every control-ow branch in the source program, the recorder generates conditional exit LIR instructions. These instruc- tions exit from the trace if required control ow is different from what it was at trace recording, ensuring that the trace instructions are run only if they are supposed to. We call these instructions guard instructions. Most of our traces represent loops and end with the special loop LIR instruction. This is just an unconditional branch to the top of the trace. Such traces return only via guards. Now, we describe the key optimizations that are performed as part of recording LIR. All of these optimizations reduce complex dynamic language constructs to simple typed constructs by spe- cializing for the current trace. Each optimization requires guard in- structions to verify their assumptions about the state and exit the trace if necessary. Type specialization. All LIR primitives apply to operands of specic types. Thus, LIR traces are necessarily type-specialized, and a compiler can easily produce a translation that requires no type dispatches. A typical bytecode interpreter carries tag bits along with each value, and to perform any operation, must check the tag bits, dynamically dispatch, mask out the tag bits to recover the untagged value, perform the operation, and then reapply tags. LIR omits everything except the operation itself. A potential problem is that some operations can produce values of unpredictable types. For example, reading a property from an object could yield a value of any type, not necessarily the type observed during recording. The recorder emits guard instructions that conditionally exit if the operation yields a value of a different type from that seen during recording. These guard instructions guarantee that as long as execution is on trace, the types of values match those of the typed trace. When the VM observes a side exit along such a type guard, a new typed trace is recorded originating at the side exit location, capturing the new type of the operation in question. Representation specialization: objects. In JavaScript, name lookup semantics are complex and potentially expensive because they include features like object inheritance and eval . To evaluate an object property read expression like o.x , the interpreter must search the property map of o and all of its prototypes and parents. Property maps can be implemented with different data structures (e.g., per-object hash tables or shared hash tablesso the search process also must dispatch on the representation of each object found during search. TraceMonkey can simply observe the result of the search process and record the simplest possible LIR to access the property value. For example, the search might nds the value of o.x in the prototype of o , which uses a shared hash-table represen- tation that places x in slot 2 of a property vector. Then the recorded can generate LIR that reads o.x with just two or three loads: one to get the prototype, possibly one to get the property value vector, and one more to get slot 2 from the vector. This is a vast simplication and speedup compared to the original interpreter code. Inheritance relationships and object representations can change during execu- tion, so the simplied code requires guard instructions that ensure the object representation is the same. In TraceMonkey, objects\' rep- resentations are assigned an integer key called the object shape . Thus, the guard is a simple equality check on the object shape. Representation specialization: numbers. JavaScript has no integer type, only a Number type that is the set of 64-bit IEEE- 754 oating-pointer numbers (“doubles”But many JavaScript operators, in particular array accesses and bitwise operators, really operate on integers, so they rst convert the number to an integer, and then convert any integer result back to a double. 1 Clearly, a JavaScript VM that wants to be fast must nd a way to operate on integers directly and avoid these conversions. In TraceMonkey, we support two representations for numbers: integers and doubles. The interpreter uses integer representations as much as it can, switching for results that can only be represented as doubles. When a trace is started, some values may be imported and represented as integers. Some operations on integers require guards. For example, adding two integers can produce a value too large for the integer representation. Function inlining. LIR traces can cross function boundaries in either direction, achieving function inlining. Move instructions need to be recorded for function entry and exit to copy arguments in and return values out. These move statements are then optimized away by the compiler using copy propagation. In order to be able to return to the interpreter, the trace must also generate LIR to record that a call frame has been entered and exited. The frame entry and exit LIR saves just enough information to allow the intepreter call stack to be restored later and is much simpler than the interpreter\'s standard call code. If the function being entered is not constant (which in JavaScript includes any call by function namethe recorder must also emit LIR to guard that the function is the same. Guards and side exits. Each optimization described above requires one or more guards to verify the assumptions made in doing the optimization. A guard is just a group of LIR instructions that performs a test and conditional exit. The exit branches to a side exit , a small off-trace piece of LIR that returns a pointer to a structure that describes the reason for the exit along with the interpreter PC at the exit point and any other data needed to restore the interpreter\'s state structures. Aborts. Some constructs are difcult to record in LIR traces. For example, eval or calls to external functions can change the program state in unpredictable ways, making it difcult for the tracer to know the current type map in order to continue tracing. A tracing implementation can also have any number of other limi- tations, e.g.,a small-memory device may limit the length of traces. When any situation occurs that prevents the implementation from continuing trace recording, the implementation aborts trace record- ing and returns to the trace monitor. 3.2 Trace Trees Especially simple loops, namely those where control ow, value types, value representations, and inlined functions are all invariant, can be represented by a single trace. But most loops have at least some variation, and so the program will take side exits from the main trace. When a side exit becomes hot, TraceMonkey starts a new branch trace from that point and patches the side exit to jump directly to that trace. In this way, a single trace expands on demand to a single-entry, multiple-exit trace tree . This section explains how trace trees are formed during execu- tion. The goal is to form trace trees during execution that cover all the hot paths of the program.1 Arrays are actually worse than this: if the index value is a number, it must be converted from a double to a string for the property access operator, and then to an integer internally to the array implementation. Starting a tree. Tree trees always start at loop headers, because they are a natural place to look for hot paths. In TraceMonkey, loop headers are easy to detect–the bytecode compiler ensures that a bytecode is a loop header iff it is the target of a backward branch. TraceMonkey starts a tree when a given loop header has been exe- cuted a certain number of times (2 in the current implementation Starting a tree just means starting recording a trace for the current point and type map and marking the trace as the root of a tree. Each tree is associated with a loop header and type map, so there may be several trees for a given loop header. Closing the loop. Trace recording can end in several ways. Ideally, the trace reaches the loop header where it started with the same type map as on entry. This is called a type-stable loop iteration. In this case, the end of the trace can jump right to the beginning, as all the value representations are exactly as needed to enter the trace. The jump can even skip the usual code that would copy out the state at the end of the trace and copy it back in to the trace activation record to enter a trace. In certain cases the trace might reach the loop header with a different type map. This scenario is sometime observed for the rst iteration of a loop. Some variables inside the loop might initially be undened , before they are set to a concrete type during the rst loop iteration. When recording such an iteration, the recorder cannot link the trace back to its own loop header since it is type-unstable . Instead, the iteration is terminated with a side exit that will always fail and return to the interpreter. At the same time a new trace is recorded with the new type map. Every time an additional type- unstable trace is added to a region, its exit type map is compared to the entry map of all existing traces in case they complement each other. With this approach we are able to cover type-unstable loop iterations as long they eventually form a stable equilibrium. Finally, the trace might exit the loop before reaching the loop header, for example because execution reaches a break or return statement. In this case, the VM simply ends the trace with an exit to the trace monitor. As mentioned previously, we may speculatively chose to rep- resent certain Number-typed values as integers on trace. We do so when we observe that Number-typed variables contain an integer value at trace entry. If during trace recording the variable is unex- pectedly assigned a non-integer value, we have to widen the type of the variable to a double. As a result, the recorded trace becomes inherently type-unstable since it starts with an integer value but ends with a double value. This represents a mis-speculation, since at trace entry we specialized the Number-typed value to an integer, assuming that at the loop edge we would again nd an integer value in the variable, allowing us to close the loop. To avoid future spec- ulative failures involving this variable, and to obtain a type-stable trace we note the fact that the variable in question as been observed to sometimes hold non-integer values in an advisory data structure which we call the “oracle”. When compiling loops, we consult the oracle before specializ- ing values to integers. Speculation towards integers is performed only if no adverse information is known to the oracle about that particular variable. Whenever we accidentally compile a loop that is type-unstable due to mis-speculation of a Number-typed vari- able, we immediately trigger the recording of a new trace, which based on the now updated oracle information will start with a dou- ble value and thus become type stable. Extending a tree. Side exits lead to different paths through the loop, or paths with different types or representations. Thus, to completely cover the loop, the VM must record traces starting at all side exits. These traces are recorded much like root traces: there is a counter for each side exit, and when the counter reaches a hotness threshold, recording starts. Recording stops exactly as for the root trace, using the loop header of the root trace as the target to reach. Our implementation does not extend at all side exits. It extends only if the side exit is for a control-ow branch, and only if the side exit does not leave the loop. In particular we do not want to extend a trace tree along a path that leads to an outer loop, because we want to cover such paths in an outer tree through tree nesting . 3.3 Blacklisting Sometimes, a program follows a path that cannot be compiled into a trace, usually because of limitations in the implementation. TraceMonkey does not currently support recording throwing and catching of arbitrary exceptions. This design trade off was chosen, because exceptions are usually rare in JavaScript. However, if a program opts to use exceptions intensively, we would suddenly incur a punishing runtime overhead if we repeatedly try to record a trace for this path and repeatedly fail to do so, since we abort tracing every time we observe an exception being thrown. As a result, if a hot loop contains traces that always fail, the VM could potentially run much more slowly than the base interpreter: the VM repeatedly spends time trying to record traces, but is never able to run any. To avoid this problem, whenever the VM is about to start tracing, it must try to predict whether it will nish the trace. Our prediction algorithm is based on blacklisting traces that have been tried and failed. When the VM fails to nish a trace start- ing at a given point, the VM records that a failure has occurred. The VM also sets a counter so that it will not try to record a trace starting at that point until it is passed a few more times (32 in our imple- mentationThis backoff counter gives temporary conditions that prevent tracing a chance to end. For example, a loop may behave differently during startup than during its steady-state execution. Af- ter a given number of failures (2 in our implementationthe VM marks the fragment as blacklisted, which means the VM will never again start recording at that point. After implementing this basic strategy, we observed that for small loops that get blacklisted, the system can spend a noticeable amount of time just nding the loop fragment and determining that it has been blacklisted. We now avoid that problem by patching the bytecode. We dene an extra no-op bytecode that indicates a loop header. The VM calls into the trace monitor every time the inter- preter executes a loop header no-op. To blacklist a fragment, we simply replace the loop header no-op with a regular no-op. Thus, the interpreter will never again even call into the trace monitor. There is a related problem we have not yet solved, which occurs when a loop meets all of these conditions: The VM can form at least one root trace for the loop. There is at least one hot side exit for which the VM cannot complete a trace. The loop body is short. In this case, the VM will repeatedly pass the loop header, search for a trace, nd it, execute it, and fall back to the interpreter. With a short loop body, the overhead of nding and calling the trace is high, and causes performance to be even slower than the basic interpreter. So far, in this situation we have improved the implementation so that the VM can complete the branch trace. But it is hard to guarantee that this situation will never happen. As future work, this situation could be avoided by detecting and blacklisting loops for which the average trace call executes few bytecodes before returning to the interpreter. 4. Nested Trace Tree Formation Figure 7 shows basic trace tree compilation (11applied to a nested loop where the inner loop contains two paths. Usually, the inner loop (with header at i 2 becomes hot rst, and a trace tree is rooted at that point. For example, the rst recorded trace may be a cycleFigure 5. A tree with two traces, a trunk trace and one branch trace. The trunk trace contains a guard to which a branch trace was attached. The branch trace contain a guard that may fail and trigger a side exit. Both the trunk and the branch trace loop back to the tree anchor, which is the beginning of the trace tree.Figure 6. We handle type-unstable loops by allowing traces to compile that cannot loop back to themselves due to a type mis- match. As such traces accumulate, we attempt to connect their loop edges to form groups of trace trees that can execute without having to side-exit to the interpreter to cover odd type cases. This is par- ticularly important for nested trace trees where an outer tree tries to call an inner tree (or in this case a forest of inner treessince inner loops frequently have initially undened values which change type to a concrete value after the rst iteration. through the inner loop, f i 2 ; i 3 ; i 5 ; g . The symbol is used to indicate that the trace loops back the tree anchor. When execution leaves the inner loop, the basic design has two choices. First, the system can stop tracing and give up on compiling the outer loop, clearly an undesirable solution. The other choice is to continue tracing, compiling traces for the outer loop inside the inner loop\'s trace tree. For example, the program might exit at i 5 and record a branch trace that incorporates the outer loop: f i 5 ; i 7 ; i 1 ; i 6 ; i 7 ; i 1 ; g . Later, the program might take the other branch at i 2 and then exit, recording another branch trace incorporating the outer loop: f i 2 ; i 4 ; i 5 ; i 7 ; i 1 ; i 6 ; i 7 ; i 1 ; g . Thus, the outer loop is recorded and compiled twice, and both copies must be retained in the trace cache. Figure 7. Control ow graph of a nested loop with an if statement inside the inner most loop (aAn inner tree captures the inner loop, and is nested inside an outer tree which “calls” the inner tree. The inner tree returns to the outer tree once it exits along its loop condition guard (b In general, if loops are nested to depth k , and each loop has n paths (on geometric averagethis na ¨ ve strategy yields O ( n k traces, which can easily ll the trace cache. In order to execute programs with nested loops efciently, a tracing system needs a technique for covering the nested loops with native code without exponential trace duplication. 4.1 Nesting Algorithm The key insight is that if each loop is represented by its own trace tree, the code for each loop can be contained only in its own tree, and outer loop paths will not be duplicated. Another key fact is that we are not tracing arbitrary bytecodes that might have irreduceable control ow graphs, but rather bytecodes produced by a compiler for a language with structured control ow. Thus, given two loop edges, the system can easily determine whether they are nested and which is the inner loop. Using this knowledge, the system can compile inner and outer loops separately, and make the outer loop\'s traces call the inner loop\'s trace tree. The algorithm for building nested trace trees is as follows. We start tracing at loop headers exactly as in the basic tracing system. When we exit a loop (detected by comparing the interpreter PC with the range given by the loop edgewe stop the trace. The key step of the algorithm occurs when we are recording a trace for loop L R ( R for loop being recordedand we reach the header of a different loop L O ( O for other loopNote that L O must be an inner loop of L R because we stop the trace when we exit a loop. If L O has a type-matching compiled trace tree, we call L O as a nested trace tree. If the call succeeds, then we record the call in the trace for L R . On future executions, the trace for L R will call the inner trace directly. If L O does not have a type-matching compiled trace tree yet, we have to obtain it before we are able to proceed. In order to do this, we simply abort recording the rst trace. The trace monitor will see the inner loop header, and will immediately start recording the inner loop. 2 If all the loops in a nest are type-stable, then loop nesting creates no duplication. Otherwise, if loops are nested to a depth k , and each2 Instead of aborting the outer recording, we could principally merely sus- pend the recording, but that would require the implementation to be able to record several traces simultaneously, complicating the implementation, while saving only a few iterations in the interpreter.Figure 8. Control ow graph of a loop with two nested loops (left and its nested trace tree conguration (rightThe outer tree calls the two inner nested trace trees and places guards at their side exit locations. loop is entered with m different type maps (on geometric average then we compile O ( m k copies of the innermost loop. As long as m is close to 1, the resulting trace trees will be tractable. An important detail is that the call to the inner trace tree must act like a function call site: it must return to the same point every time. The goal of nesting is to make inner and outer loops independent; thus when the inner tree is called, it must exit to the same point in the outer tree every time with the same type map. Because we cannot actually guarantee this property, we must guard on it after the call, and side exit if the property does not hold. A common reason for the inner tree not to return to the same point would be if the inner tree took a new side exit for which it had never compiled a trace. At this point, the interpreter PC is in the inner tree, so we cannot continue recording or executing the outer tree. If this happens during recording, we abort the outer trace, to give the inner tree a chance to nish growing. A future execution of the outer tree would then be able to properly nish and record a call to the inner tree. If an inner tree side exit happens during execution of a compiled trace for the outer tree, we simply exit the outer trace and start recording a new branch in the inner tree. 4.2 Blacklisting with Nesting The blacklisting algorithm needs modication to work well with nesting. The problem is that outer loop traces often abort during startup (because the inner tree is not available or takes a side exit which would lead to their being quickly blacklisted by the basic algorithm. The key observation is that when an outer trace aborts because the inner tree is not ready, this is probably a temporary condition. Thus, we should not count such aborts toward blacklisting as long as we are able to build up more traces for the inner tree. In our implementation, when an outer tree aborts on the inner tree, we increment the outer tree\'s blacklist counter as usual and back off on compiling it. When the inner tree nishes a trace, we decrement the blacklist counter on the outer loop, “forgiving” the outer loop for aborting previously. We also undo the backoff so that the outer tree can start immediately trying to compile the next time we reach it. 5. Trace Tree Optimization This section explains how a recorded trace is translated to an optimized machine code trace. The trace compilation subsystem, NA N O J I T , is separate from the VM and can be used for other applications. 5.1 Optimizations Because traces are in SSA form and have no join points or - nodes, certain optimizations are easy to implement. In order to get good startup performance, the optimizations must run quickly, so we chose a small set of optimizations. We implemented the optimizations as pipelined lters so that they can be turned on and off independently, and yet all run in just two loop passes over the trace: one forward and one backward. Every time the trace recorder emits a LIR instruction, the in- struction is immediately passed to the rst lter in the forward pipeline. Thus, forward lter optimizations are performed as the trace is recorded. Each lter may pass each instruction to the next lter unchanged, write a different instruction to the next lter, or write no instruction at all. For example, the constant folding lter can replace a multiply instruction like v 13 := mul 3 ; 1000 with a constant instruction v 13 = 3000 . We currently apply four forward lters: On ISAs without oating-point instructions, a soft-oat lter converts oating-point LIR instructions to sequences of integer instructions. CSE (constant subexpression elimination expression simplication, including constant folding and a few algebraic identities (e.g., a a = 0 and source language semantic-specic expression simplication, primarily algebraic identities that allow D O U B L E to be replaced with I N T . For example, LIR that converts an I N T to a D O U B L E and then back again would be removed by this lter. When trace recording is completed, nanojit runs the backward optimization lters. These are used for optimizations that require backward program analysis. When running the backward lters, nanojit reads one LIR instruction at a time, and the reads are passed through the pipeline. We currently apply three backward lters: Dead data-stack store elimination. The LIR trace encodes many stores to locations in the interpreter stack. But these values are never read back before exiting the trace (by the interpreter or another traceThus, stores to the stack that are overwritten before the next exit are dead. Stores to locations that are off the top of the interpreter stack at future exits are also dead. Dead call-stack store elimination. This is the same optimization as above, except applied to the interpreter\'s call stack used for function call inlining. Dead code elimination. This eliminates any operation that stores to a value that is never used. After a LIR instruction is successfully read (“pulled”from the backward lter pipeline, nanojit\'s code generator emits native machine instruction(sfor it. 5.2 Register Allocation We use a simple greedy register allocator that makes a single backward pass over the trace (it is integrated with the code gen- eratorBy the time the allocator has reached an instruction like v 3 = add v 1 ; v 2 , it has already assigned a register to v 3 . If v 1 and v 2 have not yet been assigned registers, the allocator assigns a free register to each. If there are no free registers, a value is selected for spilling. We use a class heuristic that selects the “oldest” register- carried value (6 The heuristic considers the set R of values v in registers imme- diately after the current instruction for spilling. Let v m be the last instruction before the current where each v is referred to. Then the TagJS TypeDescriptionxx1number31-bit integer representation 000objectpointer to JSObject handle 010numberpointer to double handle 100stringpointer to JSString handle 110booleanenumeration for null, undened, true, falsenull, orundenedFigure 9. Tagged values in the SpiderMonkey JS interpreter. Testing tags, unboxing (extracting the untagged valueand boxing (creating tagged valuesare signicant costs. Avoiding these costs is a key benet of tracing. heuristic selects v with minimum v m . The motivation is that this frees up a register for as long as possible given a single spill. If we need to spill a value v s at this point, we generate the restore code just after the code for the current instruction. The corresponding spill code is generated just after the last point where v s was used. The register that was assigned to v s is marked free for the preceding code, because that register can now be used freely without affecting the following code 6. Implementation To demonstrate the effectiveness of our approach, we have im- plemented a trace-based dynamic compiler for the SpiderMonkey JavaScript Virtual Machine (4SpiderMonkey is the JavaScript VM embedded in Mozilla\'s Firefox open-source web browser (2 which is used by more than 200 million users world-wide. The core of SpiderMonkey is a bytecode interpreter implemented in C++. In SpiderMonkey, all JavaScript values are represented by the type jsval . A jsval is machine word in which up to the 3 of the least signicant bits are a type tag, and the remaining bits are data. See Figure 6 for details. All pointers contained in jsvals point to GC-controlled blocks aligned on 8-byte boundaries. JavaScript object values are mappings of string-valued property names to arbitrary values. They are represented in one of two ways in SpiderMonkey. Most objects are represented by a shared struc- tural description, called the object shape , that maps property names to array indexes using a hash table. The object stores a pointer to the shape and the array of its own property values. Objects with large, unique sets of property names store their properties directly in a hash table. The garbage collector is an exact, non-generational, stop-the- world mark-and-sweep collector. In the rest of this section we discuss key areas of the TraceMon- key implementation. 6.1 Calling Compiled Traces Compiled traces are stored in a trace cache , indexed by intepreter PC and type map. Traces are compiled so that they may be called as functions using standard native calling conventions (e.g., FASTCALL on x86 The interpreter must hit a loop edge and enter the monitor in order to call a native trace for the rst time. The monitor computes the current type map, checks the trace cache for a trace for the current PC and type map, and if it nds one, executes the trace. To execute a trace, the monitor must build a trace activation record containing imported local and global variables, temporary stack space, and space for arguments to native calls. The local and global values are then copied from the interpreter state to the trace activation record. Then, the trace is called like a normal C function pointer. When a trace call returns, the monitor restores the interpreter state. First, the monitor checks the reason for the trace exit and applies blacklisting if needed. Then, it pops or synthesizes inter- preter JavaScript call stack frames as needed. Finally, it copies the imported variables back from the trace activation record to the in- terpreter state. At least in the current implementation, these steps have a non- negligible runtime cost, so minimizing the number of interpreter- to-trace and trace-to-interpreter transitions is essential for perfor- mance. (see also Section 3.3Our experiments (see Figure 12 show that for programs we can trace well such transitions hap- pen infrequently and hence do not contribute signicantly to total runtime. In a few programs, where the system is prevented from recording branch traces for hot side exits by aborts, this cost can rise to up to 10% of total execution time. 6.2 Trace Stitching Transitions from a trace to a branch trace at a side exit avoid the costs of calling traces from the monitor, in a feature called trace stitching . At a side exit, the exiting trace only needs to write live register-carried values back to its trace activation record. In our im- plementation, identical type maps yield identical activation record layouts, so the trace activation record can be reused immediately by the branch trace. In programs with branchy trace trees with small traces, trace stitching has a noticeable cost. Although writing to memory and then soon reading back would be expected to have a high L1 cache hit rate, for small traces the increased instruction count has a noticeable cost. Also, if the writes and reads are very close in the dynamic instruction stream, we have found that current x86 processors often incur penalties of 6 cycles or more (e.g., if the instructions use different base registers with equal values, the processor may not be able to detect that the addresses are the same right away The alternate solution is to recompile an entire trace tree, thus achieving inter-trace register allocation (10The disadvantage is that tree recompilation takes time quadratic in the number of traces. We believe that the cost of recompiling a trace tree every time a branch is added would be prohibitive. That problem might be mitigated by recompiling only at certain points, or only for very hot, stable trees. In the future, multicore hardware is expected to be common, making background tree recompilation attractive. In a closely re- lated project (13background recompilation yielded speedups of up to 1.25x on benchmarks with many branch traces. We plan to apply this technique to TraceMonkey as future work. 6.3 Trace Recording The job of the trace recorder is to emit LIR with identical semantics to the currently running interpreter bytecode trace. A good imple- mentation should have low impact on non-tracing interpreter per- formance and a convenient way for implementers to maintain se- mantic equivalence. In our implementation, the only direct modication to the inter- preter is a call to the trace monitor at loop edges. In our benchmark results (see Figure 12the total time spent in the monitor (for all activitiesis usually less than 5%, so we consider the interpreter impact requirement met. Incrementing the loop hit counter is ex- pensive because it requires us to look up the loop in the trace cache, but we have tuned our loops to become hot and trace very quickly (on the second iterationThe hit counter implementation could be improved, which might give us a small increase in overall perfor- mance, as well as more exibility with tuning hotness thresholds. Once a loop is blacklisted we never call into the trace monitor for that loop (see Section 3.3 Recording is activated by a pointer swap that sets the inter- preter\'s dispatch table to call a single “interrupt” routine for ev- ery bytecode. The interrupt routine rst calls a bytecode-specic recording routine. Then, it turns off recording if necessary (e.g., the trace endedFinally, it jumps to the standard interpreter byte- code implementation. Some bytecodes have effects on the type map that cannot be predicted before executing the bytecode (e.g., call- ing String.charCodeAt , which returns an integer or NaN if the index argument is out of rangeFor these, we arrange for the inter- preter to call into the recorder again after executing the bytecode. Since such hooks are relatively rare, we embed them directly into the interpreter, with an additional runtime check to see whether a recorder is currently active. While separating the interpreter from the recorder reduces indi- vidual code complexity, it also requires careful implementation and extensive testing to achieve semantic equivalence. In some cases achieving this equivalence is difcult since Spi- derMonkey follows a fat-bytecode design, which was found to be benecial to pure interpreter performance. In fat-bytecode designs, individual bytecodes can implement complex processing (e.g., the getprop bytecode, which imple- ments full JavaScript property value access, including special cases for cached and dense array access Fat bytecodes have two advantages: fewer bytecodes means lower dispatch cost, and bigger bytecode implementations give the compiler more opportunities to optimize the interpreter. Fat bytecodes are a problem for TraceMonkey because they require the recorder to reimplement the same special case logic in the same way. Also, the advantages are reduced because (a dispatch costs are eliminated entirely in compiled traces, (bthe traces contain only one special case, not the interpreter\'s large chunk of code, and (cTraceMonkey spends less time running the base interpreter. One way we have mitigated these problems is by implementing certain complex bytecodes in the recorder as sequences of simple bytecodes. Expressing the original semantics this way is not too dif- cult, and recording simple bytecodes is much easier. This enables us to retain the advantages of fat bytecodes while avoiding some of their problems for trace recording. This is particularly effective for fat bytecodes that recurse back into the interpreter, for example to convert an object into a primitive value by invoking a well-known method on the object, since it lets us inline this function call. It is important to note that we split fat opcodes into thinner op- codes only during recording. When running purely interpretatively (i.e. code that has been blacklistedthe interpreter directly and ef- ciently executes the fat opcodes. 6.4 Preemption SpiderMonkey, like many VMs, needs to preempt the user program periodically. The main reasons are to prevent innitely looping scripts from locking up the host system and to schedule GC. In the interpreter, this had been implemented by setting a “pre- empt now” ag that was checked on every backward jump. This strategy carried over into TraceMonkey: the VM inserts a guard on the preemption ag at every loop edge. We measured less than a 1% increase in runtime on most benchmarks for this extra guard. In practice, the cost is detectable only for programs with very short loops. We tested and rejected a solution that avoided the guards by compiling the loop edge as an unconditional jump, and patching the jump target to an exit routine when preemption is required. This solution can make the normal case slightly faster, but then preemption becomes very slow. The implementation was also very complex, especially trying to restart execution after the preemption. 6.5 Calling External Functions Like most interpreters, SpiderMonkey has a foreign function inter- face (FFIthat allows it to call C builtins and host system functions (e.g., web browser control and DOM accessThe FFI has a stan- dard signature for JS-callable functions, the key argument of which is an array of boxed values. External functions called through the FFI interact with the program state through an interpreter API (e.g., to read a property from an argumentThere are also certain inter- preter builtins that do not use the FFI, but interact with the program state in the same way, such as the CallIteratorNext function used with iterator objects. TraceMonkey must support this FFI in order to speed up code that interacts with the host system inside hot loops. Calling external functions from TraceMonkey is potentially dif- cult because traces do not update the interpreter state until exit- ing. In particular, external functions may need the call stack or the global variables, but they may be out of date. For the out-of-date call stack problem, we refactored some of the interpreter API implementation functions to re-materialize the interpreter call stack on demand. We developed a C++ static analysis and annotated some inter- preter functions in order to verify that the call stack is refreshed at any point it needs to be used. In order to access the call stack, a function must be annotated as either F O R C E S S TAC K or R E - Q U I R E S S TAC K . These annotations are also required in order to call R E Q U I R E S S TAC K functions, which are presumed to access the call stack transitively. F O R C E S S TAC K is a trusted annotation, applied to only 5 functions, that means the function refreshes the call stack. R E Q U I R E S S TAC K is an untrusted annotation that means the func- tion may only be called if the call stack has already been refreshed. Similarly, we detect when host functions attempt to directly read or write global variables, and force the currently running trace to side exit. This is necessary since we cache and unbox global variables into the activation record during trace execution. Since both call-stack access and global variable access are rarely performed by host functions, performance is not signicantly affected by these safety mechanisms. Another problem is that external functions can reenter the inter- preter by calling scripts, which in turn again might want to access the call stack or global variables. To address this problem, we made the VM set a ag whenever the interpreter is reentered while a com- piled trace is running. Every call to an external function then checks this ag and exits the trace immediately after returning from the external function call if it is set. There are many external functions that seldom or never reenter, and they can be called without problem, and will cause trace exit only if necessary. The FFI\'s boxed value array requirement has a performance cost, so we dened a new FFI that allows C functions to be an- notated with their argument types so that the tracer can call them directly, without unnecessary argument conversions. Currently, we do not support calling native property get and set override functions or DOM functions directly from trace. Support is planned future work. 6.6 Correctness During development, we had access to existing JavaScript test suites, but most of them were not designed with tracing VMs in mind and contained few loops. One tool that helped us greatly was Mozilla\'s JavaScript fuzz tester, J S F U N F U Z Z , which generates random JavaScript programs by nesting random language elements. We modied J S F U N F U Z Z to generate loops, and also to test more heavily certain constructs we suspected would reveal aws in our implementation. For exam- ple, we suspected bugs in TraceMonkey\'s handling of type-unstableFigure 11. Fraction of dynamic bytecodes executed by inter- preter and on native traces. The speedup vs. interpreter is shown in parentheses next to each test. The fraction of bytecodes exe- cuted while recording is too small to see in this gure, except for crypto-md5 , where fully 3% of bytecodes are executed while recording. In most of the tests, almost all the bytecodes are exe- cuted by compiled traces. Three of the benchmarks are not traced at all and run in the interpreter. loops and heavily branching code, and a specialized fuzz tester in- deed revealed several regressions which we subsequently corrected. 7. Evaluation We evaluated our JavaScript tracing implementation using Sun- Spider, the industry standard JavaScript benchmark suite. SunSpi- der consists of 26 short-running (less than 250ms, average 26ms JavaScript programs. This is in stark contrast to benchmark suites such as SpecJVM98 (3used to evaluate desktop and server Java VMs. Many programs in those benchmarks use large data sets and execute for minutes. The SunSpider programs carry out a variety of tasks, primarily 3d rendering, bit-bashing, cryptographic encoding, math kernels, and string processing. All experiments were performed on a MacBook Pro with 2.2 GHz Core 2 processor and 2 GB RAM running MacOS 10.5. Benchmark results. The main question is whether programs run faster with tracing. For this, we ran the standard SunSpider test driver, which starts a JavaScript interpreter, loads and runs each program once for warmup, then loads and runs each program 10 times and reports the average time taken by each. We ran 4 differ- ent congurations for comparison: (aSpiderMonkey, the baseline interpreter, (bTraceMonkey, (dSquirrelFish Extreme (SFXthe call-threaded JavaScript interpreter used in Apple\'s WebKit, and (eV8, the method-compiling JavaScript VM from Google. Figure 10 shows the relative speedups achieved by tracing, SFX, and V8 against the baseline (SpiderMonkeyTracing achieves the best speedups in integer-heavy benchmarks, up to the 25x speedup on bitops-bitwise-and . TraceMonkey is the fastest VM on 9 of the 26 benchmarks ( 3d-morph , bitops-3bit-bits-in-byte , bitops-bitwise- and , crypto-sha1 , math-cordic , math-partial-sums , math- spectral-norm , string-base64 , string-validate-input Figure 10. Speedup vs. a baseline JavaScript interpreter (SpiderMonkeyfor our trace-based JIT compiler, Apple\'s SquirrelFish Extreme inline threading interpreter and Google\'s V8 JS compiler. Our system generates particularly efcient code for programs that benet most from type specialization, which includes SunSpider Benchmark programs that perform bit manipulation. We type-specialize the code in question to use integer arithmetic, which substantially improves performance. For one of the benchmark programs we execute 25 times faster than the SpiderMonkey interpreter, and almost 5 times faster than V8 and SFX. For a large number of benchmarks all three VMs produce similar results. We perform worst on benchmark programs that we do not trace and instead fall back onto the interpreter. This includes the recursive benchmarks access-binary-trees and control-flow-recursive , for which we currently don\'t generate any native code. In particular, the bitops benchmarks are short programs that per- form many bitwise operations, so TraceMonkey can cover the en- tire program with 1 or 2 traces that operate on integers. TraceMon- key runs all the other programs in this set almost entirely as native code. regexp-dna is dominated by regular expression matching, which is implemented in all 3 VMs by a special regular expression compiler. Thus, performance on this benchmark has little relation to the trace compilation approach discussed in this paper. TraceMonkey\'s smaller speedups on the other benchmarks can be attributed to a few specic causes: The implementation does not currently trace recursion, so TraceMonkey achieves a small speedup or no speedup on benchmarks that use recursion extensively: 3d-cube , 3d- raytrace , access-binary-trees , string-tagcloud , and controlflow-recursive . The implementation does not currently trace eval and some other functions implemented in C. Because date-format- tofte and date-format-xparb use such functions in their main loops, we do not trace them. The implementation does not currently trace through regular expression replace operations. The replace function can be passed a function object used to compute the replacement text. Our implementation currently does not trace functions called as replace functions. The run time of string-unpack-code is dominated by such a replace call. Two programs trace well, but have a long compilation time. access-nbody forms a large number of traces (81 crypto-md5 forms one very long trace. We expect to improve performance on this programs by improving the compilation speed of nano- jit. Some programs trace very well, and speed up compared to the interpreter, but are not as fast as SFX and/or V8, namely bitops-bits-in-byte , bitops-nsieve-bits , access- fannkuch , access-nsieve , and crypto-aes . The reason is not clear, but all of these programs have nested loops with small bodies, so we suspect that the implementation has a rela- tively high cost for calling nested traces. string-fasta traces well, but its run time is dominated by string processing builtins, which are unaffected by tracing and seem to be less efcient in SpiderMonkey than in the two other VMs. Detailed performance metrics. In Figure 11 we show the frac- tion of instructions interpreted and the fraction of instructions exe- cuted as native code. This gure shows that for many programs, we are able to execute almost all the code natively. Figure 12 breaks down the total execution time into four activ- ities: interpreting bytecodes while not recording, recording traces (including time taken to interpret the recorded tracecompiling traces to native code, and executing native code traces. These detailed metrics allow us to estimate parameters for a simple model of tracing performance. These estimates should be considered very rough, as the values observed on the individual benchmarks have large standard deviations (on the order of the Loops Trees Traces Aborts Flushes Trees/Loop Traces/Tree Traces/Loop Speedup3d-cube 25 27 29 3 0 1.1 1.1 1.2 2.20x 3d-morph 5 8 8 2 0 1.6 1.0 1.6 2.86x 3d-raytrace 10 25 100 10 1 2.5 4.0 10.0 1.18x access-binary-trees 0 0 0 5 0 - - - 0.93x access-fannkuch 10 34 57 24 0 3.4 1.7 5.7 2.20x access-nbody 8 16 18 5 0 2.0 1.1 2.3 4.19x access-nsieve 3 6 8 3 0 2.0 1.3 2.7 3.05x bitops-3bit-bits-in-byte 2 2 2 0 0 1.0 1.0 1.0 25.47x bitops-bits-in-byte 3 3 4 1 0 1.0 1.3 1.3 8.67x bitops-bitwise-and 1 1 1 0 0 1.0 1.0 1.0 25.20x bitops-nsieve-bits 3 3 5 0 0 1.0 1.7 1.7 2.75x controlow-recursive 0 0 0 1 0 - - - 0.98x crypto-aes 50 72 78 19 0 1.4 1.1 1.6 1.64x crypto-md5 4 4 5 0 0 1.0 1.3 1.3 2.30x crypto-sha1 5 5 10 0 0 1.0 2.0 2.0 5.95x date-format-tofte 3 3 4 7 0 1.0 1.3 1.3 1.07x date-format-xparb 3 3 11 3 0 1.0 3.7 3.7 0.98x math-cordic 2 4 5 1 0 2.0 1.3 2.5 4.92x math-partial-sums 2 4 4 1 0 2.0 1.0 2.0 5.90x math-spectral-norm 15 20 20 0 0 1.3 1.0 1.3 7.12x regexp-dna 2 2 2 0 0 1.0 1.0 1.0 4.21x string-base64 3 5 7 0 0 1.7 1.4 2.3 2.53x string-fasta 5 11 15 6 0 2.2 1.4 3.0 1.49x string-tagcloud 3 6 6 5 0 2.0 1.0 2.0 1.09x string-unpack-code 4 4 37 0 0 1.0 9.3 9.3 1.20x string-validate-input 6 10 13 1 0 1.7 1.3 2.2 1.86xFigure 13. Detailed trace recording statistics for the SunSpider benchmark set. meanWe exclude regexp-dna from the following calculations, because most of its time is spent in the regular expression matcher, which has much different performance characteristics from the other programs. (Note that this only makes a difference of about 10% in the results.Dividing the total execution time in processor clock cycles by the number of bytecodes executed in the base interpreter shows that on average, a bytecode executes in about 35 cycles. Native traces take about 9 cycles per bytecode, a 3.9x speedup over the interpreter. Using similar computations, we nd that trace recording takes about 3800 cycles per bytecode, and compilation 3150 cycles per bytecode. Hence, during recording and compiling the VM runs at 1/200 the speed of the interpreter. Because it costs 6950 cycles to compile a bytecode, and we save 26 cycles each time that code is run natively, we break even after running a trace 270 times. The other VMs we compared with achieve an overall speedup of 3.0x relative to our baseline interpreter. Our estimated native code speedup of 3.9x is signicantly better. This suggests that our compilation techniques can generate more efcient native code than any other current JavaScript VM. These estimates also indicate that our startup performance could be substantially better if we improved the speed of trace recording and compilation. The estimated 200x slowdown for recording and compilation is very rough, and may be inuenced by startup factors in the interpreter (e.g., caches that have not warmed up yet during recordingOne observation supporting this conjecture is that in the tracer, interpreted bytecodes take about 180 cycles to run. Still, recording and compilation are clearly both expensive, and a better implementation, possibly including redesign of the LIR abstract syntax or encoding, would improve startup performance. Our performance results conrm that type specialization using trace trees substantially improves performance. We are able to outperform the fastest available JavaScript compiler (V8and the fastest available JavaScript inline threaded interpreter (SFXon 9 of 26 benchmarks. 8. Related Work Trace optimization for dynamic languages. The closest area of related work is on applying trace optimization to type-specialize dynamic languages. Existing work shares the idea of generating type-specialized code speculatively with guards along interpreter traces. To our knowledge, Rigo\'s Psyco (16is the only published type-specializing trace compiler for a dynamic language (Python Psyco does not attempt to identify hot loops or inline function calls. Instead, Psyco transforms loops to mutual recursion before running and traces all operations. Pall\'s LuaJIT is a Lua VM in development that uses trace com- pilation ideas. (1There are no publications on LuaJIT but the cre- ator has told us that LuaJIT has a similar design to our system, but will use a less aggressive type speculation (e.g., using a oating- point representation for all number valuesand does not generate nested traces for nested loops. General trace optimization. General trace optimization has a longer history that has treated mostly native code and typed languages like Java. Thus, these systems have focused less on type specialization and more on other optimizations. Dynamo (7by Bala et al, introduced native code tracing as a replacement for prole-guided optimization (PGOA major goal was to perform PGO online so that the prole was specic to the current execution. Dynamo used loop headers as candidate hot traces, but did not try to create loop traces specically. Trace trees were originally proposed by Gal et al. (11in the context of Java, a statically typed language. Their trace trees ac- tually inlined parts of outer loops within the inner loops (because Figure 12. Fraction of time spent on major VM activities. The speedup vs. interpreter is shown in parentheses next to each test. Most programs where the VM spends the majority of its time run- ning native code have a good speedup. Recording and compilation costs can be substantial; speeding up those parts of the implemen- tation would improve SunSpider performance. inner loops become hot rstleading to much greater tail duplica- tion. YETI, from Zaleski et al. (19applied Dynamo-style tracing to Java in order to achieve inlining, indirect jump elimination, and other optimizations. Their primary focus was on designing an interpreter that could easily be gradually re-engineered as a tracing VM. Suganuma et al. (18described region-based compilation (RBC a relative of tracing. A region is an subprogram worth optimizing that can include subsets of any number of methods. Thus, the com- piler has more exibility and can potentially generate better code, but the proling and compilation systems are correspondingly more complex. Type specialization for dynamic languages. Dynamic lan- guage implementors have long recognized the importance of type specialization for performance. Most previous work has focused on methods instead of traces. Chambers et. al (9pioneered the idea of compiling multiple versions of a procedure specialized for the input types in the lan- guage Self. In one implementation, they generated a specialized method online each time a method was called with new input types. In another, they used an ofine whole-program static analysis to infer input types and constant receiver types at call sites. Interest- ingly, the two techniques produced nearly the same performance. Salib (17designed a type inference algorithm for Python based on the Cartesian Product Algorithm and used the results to special- ize on types and translate the program to C++. McCloskey (14has work in progress based on a language- independent type inference that is used to generate efcient C implementations of JavaScript and Python programs. Native code generation by interpreters. The traditional inter- preter design is a virtual machine that directly executes ASTs or machine-code-like bytecodes. Researchers have shown how to gen- erate native code with nearly the same structure but better perfor- mance. Call threading, also known as context threading (8compiles methods by generating a native call instruction to an interpreter method for each interpreter bytecode. A call-return pair has been shown to be a potentially much more efcient dispatch mechanism than the indirect jumps used in standard bytecode interpreters. Inline threading (15copies chunks of interpreter native code which implement the required bytecodes into a native code cache, thus acting as a simple per-method JIT compiler that eliminates the dispatch overhead. Neither call threading nor inline threading perform type special- ization. Apple\'s SquirrelFish Extreme (5is a JavaScript implementa- tion based on call threading with selective inline threading. Com- bined with efcient interpreter engineering, these threading tech- niques have given SFX excellent performance on the standard Sun- Spider benchmarks. Google\'s V8 is a JavaScript implementation primarily based on inline threading, with call threading only for very complex operations. 9. Conclusions This paper described how to run dynamic languages efciently by recording hot traces and generating type-specialized native code. Our technique focuses on aggressively inlined loops, and for each loop, it generates a tree of native code traces representing the paths and value types through the loop observed at run time. We explained how to identify loop nesting relationships and generate nested traces in order to avoid excessive code duplication due to the many paths through a loop nest. We described our type specialization algorithm. We also described our trace compiler, which translates a trace from an intermediate representation to optimized native code in two linear passes. Our experimental results show that in practice loops typically are entered with only a few different combinations of value types of variables. Thus, a small number of traces per loop is sufcient to run a program efciently. Our experiments also show that on programs amenable to tracing, we achieve speedups of 2x to 20x. 10. Future Work Work is underway in a number of areas to further improve the performance of our trace-based JavaScript compiler. We currently do not trace across recursive function calls, but plan to add the support for this capability in the near term. We are also exploring adoption of the existing work on tree recompilation in the context of the presented dynamic compiler in order to minimize JIT pause times and obtain the best of both worlds, fast tree stitching as well as the improved code quality due to tree recompilation. We also plan on adding support for tracing across regular ex- pression substitutions using lambda functions, function applica- tions and expression evaluation using eval . All these language constructs are currently executed via interpretation, which limits our performance for applications that use those features. Acknowledgments Parts of this effort have been sponsored by the National Science Foundation under grants CNS-0615443 and CNS-0627747, as well as by the California MICRO Program and industrial sponsor Sun Microsystems under Project No. 07-127. The U.S. Government is authorized to reproduce and distribute reprints for Governmental purposes notwithstanding any copyright annotation thereon. Any opinions, ndings, and conclusions or rec- ommendations expressed here are those of the author and should not be interpreted as necessarily representing the ofcial views, policies or endorsements, either expressed or implied, of the Na- tional Science foundation (NSFany other agency of the U.S. Gov- ernment, or any of the companies mentioned above. References [1] LuaJIT roadmap 2008 - http://lua-users.org/lists/lua-l/2008- 02/msg00051.html. [2] Mozilla — Firefox web browser and Thunderbird email client - http://www.mozilla.com. [3] SPECJVM98 - http://www.spec.org/jvm98/. [4] SpiderMonkey (JavaScript-CEngine - http://www.mozilla.org/js/spidermonkey/. [5] Surn\' Safari - Blog Archive - Announcing SquirrelFish Extreme - http://webkit.org/blog/214/introducing-squirrelsh-extreme/. [6] A. Aho, R. Sethi, J. Ullman, and M. Lam. Compilers: Principles, techniques, and tools, 2006. [7] V. Bala, E. Duesterwald, and S. Banerjia. Dynamo: A transparent dynamic optimization system. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation , pages 1–12. ACM Press, 2000. [8] M. Berndl, B. Vitale, M. Zaleski, and A. Brown. Context Threading: a Flexible and Efcient Dispatch Technique for Virtual Machine In- terpreters. In Code Generation and Optimization, 2005. CGO 2005. International Symposium on , pages 15–26, 2005. [9] C. Chambers and D. Ungar. Customization: Optimizing Compiler Technology for SELF, a Dynamically-Typed O bject-Oriented Pro- gramming Language. In Proceedings of the ACM SIGPLAN 1989 Conference on Programming Language Design and Implementation , pages 146–160. ACM New York, NY, USA, 1989. [10] A. Gal. Efcient Bytecode Verication and Compilation in a Virtual Machine Dissertation . PhD thesis, University Of California, Irvine, 2006. [11] A. Gal, C. W. Probst, and M. Franz. HotpathVM: An effective JIT compiler for resource-constrained devices. In Proceedings of the International Conference on Virtual Execution Environments , pages 144–153. ACM Press, 2006. [12] C. Garrett, J. Dean, D. Grove, and C. Chambers. Measurement and Application of Dynamic Receiver Class Distributions. 1994. [13] J. Ha, M. R. Haghighat, S. Cong, and K. S. McKinley. A concurrent trace-based just-in-time compiler for javascript. Dept.of Computer Sciences, The University of Texas at Austin, TR-09-06, 2009. [14] B. McCloskey. Personal communication. [15] I. Piumarta and F. Riccardi. Optimizing direct threaded code by selec- tive inlining. In Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation , pages 291– 300. ACM New York, NY, USA, 1998. [16] A. Rigo. Representation-Based Just-In-time Specialization and the Psyco Prototype for Python. In PEPM , 2004. [17] M. Salib. Starkiller: A Static Type Inferencer and Compiler for Python. In Master\'s Thesis , 2004. [18] T. Suganuma, T. Yasue, and T. Nakatani. A Region-Based Compila- tion Technique for Dynamic Compilers. ACM Transactions on Pro- gramming Languages and Systems (TOPLAS , 28(1 2006. [19] M. Zaleski, A. D. Brown, and K. Stoodley. YETI: A graduallY Extensible Trace Interpreter. In Proceedings of the International Conference on Virtual Execution Environments , pages 83–93. ACM Press, 2007.', 'hyderabad', 41, 174, 0, NULL, 0, '2023-06-14 20:26:07', NULL);
COMMIT;

