The Dev. Team should be self-organizing and be cross-functional, so to have all necessay skills to create a increment without any help from out of team. So far is the theory but in the reality , the teams are not always in best form / constalation, especially if the team is new formed.
I remember to read somewhere that is occasionally allowed for example if dev. team invite experts from other teams , to support better estimation etc.
how about feature implementing , If the team is currently not able to solve a specific technical problem, what they should do?
A- communicate with PO/SM and do their best in the current sprint but raise an issue and try to learn how to solve the problem themselves and then improve /fix this "technical debt" ASAP in future sprints?
B- are they allowed here also get support from other teams in the current sprint?
When a team can't solve a specific technical problem, it implies that the resolution lies outside of their control and is therefore an impediment. Both of the solutions you suggest are appropriate techniques for impediment removal. The team would need to inspect and adapt their process, no later than the Sprint Retrospective, so that similar impediments do not arise again. This may involve training, changes in available resources, changes in the Definition of Done, and/or changes in the process for accepting work into their Sprint Backlog.