java程序员实用英语学习总结
1.实用英语学习方法
英语学习方法:
- wikihow
- china daily
- global times
- the economist
- 自己感兴趣的领域话题
- dragon dictation
- genius
- motivational v ideo
- goodreads
- howcast.com
- padwiki
- quora
- 词汇7000
- 模仿.重复.细听[材料不要太多]
- 听力:学会记录.模拟实战
- 记笔记方法:主动.联想.思维导图. kindle. ipad.频繁使用笔记记住内容
- 看美剧技巧:截图.速记.分享.尽量快无字母的.
- pdf软件给文档做注释。
- mooc coursera
- 用输出倒逼输入.
- 有效学好英语方法:参加雅思.托福.开设公众号总结分享学习经验。
- markdown写作分享
2.实用英语
Cover Letter(附信)
面试邀请函
介绍工作:
外企英文面试高频题:
SM Question Points:
- Self-introduction 自我介绍
- What is the difference between dependency and blocker? 依赖和阻塞的区别
- How do you monitor the delivery status? Any methods or data metrics for your reference? 如何监控交付状态?
- What is CI/CD? Jenkins, 什么是持续集成和持续交付
- How do you ensure the delivery quality in a short sprint with multiple deployments to PROD? 如何保证在快速迭代多次部署生产的软件的质量?
- 敏捷单词的解释/敏捷词的缩写: https://zhuanlan.zhihu.com/p/34870426
- How do you respond to the urgent requirement or cases? 面对突发的应急能力:需求变更、阻塞、剧烈的团队冲突
- How do you manage the stakeholders? Identify stakeholder/ meeting with stakeholder /demo+showcase /sprint review
- How is your time management of your daily work? 你的工作时间分配
- How do you coach with team/ how do you manage your team? 如何管理下属
- How long is your sprint plan meeting? 计划会议的时长
- How do you plan the sprint? 如何做计划会议
- What is the most important thing/ability/characteristic as a Scrum master? 作为SM你认为最重要的是什么
- What is the most typical team conflict per your experience? How do you resolve it? 你印象最深刻的团队冲突,如何解决?
- The usage of tools工具的使用 Jira/confluence/Jenkins/Git/etc.
- Sprint management 迭代管理
- How/when do you ask for help from team or escalate issue to manager/supervisor问题求助
- What is daily work of a Scrum master? How do you resolve the delay and how to communicate with external part to resolve the issue? 日常工作,然后面对delay怎么处理和怎么解决外部沟通
- How to host the meeting as a Scrum master? 怎么开展会议
- How do you ensure the delivery of sprint that could meet customer’s requirement?怎么确保团队做的东西能满足客户的需求
端到端解决方案执行过程:
we offer end-to-end software development services that imply transforming your initial product idea into a fully-functional product.
STAGE 1. DISCOVERY(收集需求过程)
Before developing a product or upgrading the existing software solution, the team performs initial product discovery. The main role of this stage is to grasp an overall product perception. On the way to achieving it, the team identifies the problems the solution will solve, considers technical aspects to implement it, and validates the overall market idea.
During product discovery,our team performs such activities:
1. Gather business and user goals
2. Conduct stakeholder & user interviews to formalize the technical and business requirements for the product
3. Perform market research to analyze your competitors and understand what problems your product will solve and what benefits the product will provide to customers to outperform your competitors
4. Identify main application personas
5. Create a customer journey map (CJM) to clearly outline the steps the user needs to make to achieve a certain goal while interacting with your product
STAGE 2. PLANNING
The following stage refers to formulating a single project plan outlining key project milestones, tech requirements, budget, and schedule. This means that project managers will break down the scope of work into manageable sprints, define roles and responsibilities, form a team, and create a detailed product description.
During the planning stage, our team performs such activities:
1.Conduct stakeholder workshops to finalize product requirements
2.Conduct product, design, and engineering workshops to outline the tasks for the upcoming development cycle
3.Establish a communications plan and team structure
4. Set tech requirements
5. Determine the right tech stack
6. Set project schedule and budget
7. Create software requirements specifications (SRS) and project plan
STAGE 3. UX/UI
To create an easy-to-navigate and user-friendly product experience and attractive product design, the team takes over the design of the product’s interfaces and establishes the user’s interaction with the product. The best UX/UI design practices help our designers get user feedback early on and test first design mockups.
Based on the insights from the workshops and user feedback, we create a unique design system that describes the requirements for style and all elements, allowing developers to implement the product design correctly and speed up the development.
During the UX/UI stage, our team performs such activities:
1. Establish information architecture
2. Create user flow and wireframes
3. Develop product interfaces
4. Create a unique design system that includes colors, typography, icons, and similar elements so that developers can implement software features in a consistent product style
STAGE 4. CODING
The next important stage of the end-to-end software development life cycle entails writing code to implement all software features step by step. Based on the design document specifications, SRS, and coding guidelines, developers utilize the chosen tech stack and tools needed to develop the software product.
During the coding stage, our team performs such activities:
1. Implement product features
2. Conduct regular team meetings to fine-tune the product
3. Conduct code and QA peer review
4. Conduct delivery presentations
STAGE 5. QA AND TESTING
During the testing stage, the team ensures the code doesn’t lead to any software operation failures. All features are tested to identify defects and fix them before deploying the product. The QA and testing are essential to ensure that a product meets industry quality standards and provides a positive end-user experience.
During the QA and testing stage, our team performs such activities:
1.Test software functionality
2. Conduct users’ acceptance testing
3. Check system integration
4. Test platform compatibility with other software and hardware
5. Test product’s security and performance
STAGE 6. DEPLOYMENT
After testing, our team deploys the system sequentially to avoid incorrect system operations. In this way, we can collect early user feedback, understand possible product vulnerabilities and rework them until the product is fully deployed. Our team deploys the final solution to the production environment and performs various tasks to ensure the product is ready for use.
STAGE 7. MAINTENANCE
The most significant advantage of end-to-end software development is the possibility of involving the team to handle issues reported by end users. An end-to-end service provider offers ongoing product maintenance, troubleshooting, online support, bug fixes, and product upgrades. The main goal is to implement all the necessary changes after the deployment and fix the bugs missed before the launch.
端到端的软件成本:
-
项目成本
-
项目时间表
Besides this, you should take into account that the final project estimate will also depend on the following factors:- Business model
- Features package
- Expected time to market
- Development approach
- Team location
- Team size
- Team expertise
- Hiring model
how to build end-to-end solution?
Building an end-to-end solution involves designing and implementing a comprehensive system that addresses all aspects of a business or technical problem, from front-end interfaces to back-end processing and data management. Here’s a structured approach to building an end-to-end solution:
-
Define Requirements
A. Business Requirements- Engage with stakeholders to understand business objectives(业务目的), goals(目标), and constraints(约束).
- Document functional requirements, user stories, and use cases.
B. Technical Requirements
- Define non-functional requirements, such as performance, scalability(扩展性), security, and compliance(合规性)
- Identify technology stack, integration points, and data flow requirements.
-
Design the Architecture
A. High-Level Architecture(概要设计)- Create an architectural diagram outlining major components and their interactions(创建架构图,概述主要组件及其相互作用).
- Identify front-end, back-end, data storage, and external integration points.
B. Detailed Design
- Break down each component into detailed design specifications, including data models, APIs, user interfaces, and business logic.
- Define interfaces and protocols for communication between components (e.g., REST, gRPC, messaging queues).
C. Microservices Architecture (if applicable)
- Design microservices with clear boundaries, focusing on single responsibility and loose coupling.
- Define service contracts and APIs for each microservice.
- Plan for service discovery, load balancing, and inter-service communication.
-
Implement the Solution
A. Front-End Development- Develop user interfaces using web technologies (e.g., HTML, CSS, JavaScript) or mobile technologies (e.g., Swift, Kotlin,android,ReactNative,flutter).
- Use frameworks like React, Angular, or Vue.js for web applications.
- Implement responsive design and accessibility standards.
B. Back-End Development
- Implement back-end services and APIs using server-side technologies (e.g., Java,springcloud、redis,mysql, aws, Python, Node.js).
- Develop business logic, data processing, and integration with external services.
- Ensure proper error handling, logging, and monitoring.
C. Database and Storage
- Design and implement the database schema (e.g., SQL, NoSQL,S3) based on data models. (数据库选型和数据建模)
- Ensure data normalization(规范化), indexing, and optimization for performance(性能优化).
- Implement data access layers and ORM (Object-Relational Mapping) frameworks if necessary.
D. Integration and APIs
- Develop and test APIs for integration with third-party services or other internal systems.(开发与测试集成的三方服务或内部系统)
- Ensure secure and efficient data exchange using appropriate authentication and authorization mechanisms (e.g., OAuth, JWT). AWS IAM
- Implement API gateways and management tools for traffic control and monitoring.
-
Ensure Quality and Reliability
A. Testing- Implement unit tests, integration tests, and end-to-end tests to ensure functionality and performance. pressure tests (压测)
- Use automated testing frameworks (e.g., JUnit, Selenium, Postman) to streamline the testing process.
- Conduct user acceptance testing (UAT) with stakeholders to validate requirements. 与关系人进行用户验收测试去验证需求
B. Performance Optimization
- Conduct performance testing and profiling(分析) to identify(识别) and resolve bottlenecks.
- Optimize code, database queries, and infrastructure configurations for efficiency.
- Implement caching strategies (e.g., Redis, Memcached) to reduce latency.
-
Deployment and Operations
A. Continuous Integration and Continuous Deployment (CI/CD)- Set up CI/CD pipelines using tools like Jenkins, GitLab CI, or CircleCI. (git->github-jenkins->sonar->build->push到云环境eks pod中)
- Automate build, test, and deployment processes to ensure rapid and reliable releases.
- Implement infrastructure-as-code (IaC) using tools like Terraform or CloudFormation.
B. Cloud and Containerization
- Deploy services using containerization technologies (e.g., Docker, Kubernetes).
- Use cloud platforms (e.g., AWS, Azure, Google Cloud) for scalable and managed infrastructure.
- Implement autoscaling and load balancing to handle variable traffic.
C. Monitoring and Logging
- Implement monitoring and alerting using tools like Prometheus, Grafana, or ELK Stack (Elasticsearch, Logstash, Kibana). splunk,appdynamics
- Collect and analyze logs for troubleshooting and performance insights.
- Set up alerts for critical metrics and incidents to ensure rapid response. (slack/teams/dingtalk/wechat/sms/email)
-
Security and Compliance(合规性)
A. Security Best Practices- Implement secure coding practices and conduct regular security reviews. 安全编码最佳实践,编码规范,jacco,soar, 定期进行安全检查和漏洞扫描
- Use encryption for data at rest (静态的)and in transit.(对静态数据和传输中的数据使用加密。)
- Ensure proper authentication and authorization mechanisms are in place.
B. Compliance and Data Privacy(合规性和数据隐私)
- Adhere to relevant compliance standards (e.g., GDPR, HIPAA) and industry regulations. 国际区域数据监管政策,对数据进行分级处理
- Implement data privacy measures, including data anonymization(匿名化) and consent management.
- Conduct regular audits and vulnerability assessments.(脆弱性评估)
-
Documentation and Training
- Document the architecture, design decisions, APIs, and usage instructions.记录架构、设计决策、API 和使用说明。
- Create user guides and technical documentation for developers and stakeholders.
- Provide training sessions and support for users and maintenance teams.
-
Continuous Improvement
- Gather feedback from users and stakeholders to identify areas for improvement.
- Implement iterative enhancements and new features based on feedback and evolving requirements.
- Regularly review and update the system to incorporate(纳入) new technologies and best practices.
By following these steps, you can build a robust, scalable, and maintainable end-to-end solution that meets business requirements and provides a high-quality user experience.
4.参考资料
- 技术面试手册
https://www.techinterviewhandbook.org/software-engineering-interview-guide/ - 英文面试常见问题
https://www.bilibili.com/video/BV1vA4y1Q7Hh/?spm_id_from=333.788&vd_source=51c993d69874e13d552c1b91dbf90aec