Single page applications (SPAs) provide a desktop-like user experience by dynamically loading content within a single web page rather than linking between multiple pages. Key characteristics of SPAs include chunking of HTML and data, use of MVC patterns for controllers, templating for views, routing for navigation without page reloads, real-time communication with servers, and local storage of data. Challenges for SPAs include search engine optimization due to lack of JavaScript execution, maintaining browser history state, and managing the page lifecycle of progressively loading content.